详解Python中__str__和__repr__方法的区别


Posted in Python onApril 17, 2015

 对我当前工程进行全部测试需要花费不少时间。既然有 26 GB 空闲内存,为何不让其发挥余热呢? tmpfs 可以通过把文件系统保存在大内存中来加速测试的执行效率。

但优点也是缺点,tmpfs 只把结果保存在内存中,所以你必须自己编写脚本来把结果回写到磁盘上进行保留。而且这些脚本必须良好书写和执行,否则就要失去部分或全部的工作成果了。

一种常见的方法是直接在tmpfs文件夹中工作,然后把工作成果备份到磁盘上的一个文件夹中。当您的机器启动时你从那个备份文件夹恢复tmpfs文件夹。启动之后用cron同步tmpfs文件夹和磁盘文件夹。

我发现这个设置有点复杂容易出错。在启动的时候,或者对于crom,我从没有真正的相信。现在我用一种简单得多的设置,根本不用cron。

在我的机器上运行一个单项测试,使用IDE并发布于web服务器,其性能通常是合理的,只有运行全部测试需要许多时间。

我发现最佳之处是在磁盘上设置一个workspace,与/dev/shmand目录下运行所有测试的tmpfs同步。这或多或少使我的设置无需改变,并消除了可能松散的工作,这些仅仅是因为我在正确设置方面太垃圾了。

性能提升的结果是合理的:
 

$ nosetests && run_tests.py
........................................................................................................................................................................................................................................................
----------------------------------------------------------------------
Ran 248 tests in 107.070s
 
OK
........................................................................................................................................................................................................................................................
----------------------------------------------------------------------
Ran 248 tests in 19.423s
 
OK

现在比原来提高了 5 倍速度。

使用 python 来进行设置非常简单:
 

#!/bin/bash -e
 
WORK=src/py
LOG=$(pwd)/test.log
TARGET=$(hg root)
SHADOW=/dev/shm/shadow/$TARGET
 
date > $LOG
mkdir -p $SHADOW
 
cd $SHADOW
rsync --update --delete --exclude=".*" --exclude=ENV --archive $TARGET ./..
 
if [ ! -d ENV ]
then
 virtualenv ENV
fi
. ENV/bin/activate
 
cd $WORK
python setup.py develop >> $LOG
nosetests $* | tee -a $LOG
exit ${PIPESTATUS[0]}

我只要重复同步到/dev/shm目录,设置测试环境(virtualenv and python setup.PY)和运行测试(nosetests)。

在tmpfs文件夹里仍可用命令行运行单个测试。也可以把这个从你的IDE中踢走,但你会失去你的测试运行和调试的能力。如我之前所说,我现在不需要这些。

我希望我对tmpfs的这个变通使用能帮助你建立一个更快速的开发环境,而无须遭受所有的脚本麻烦。

Python 相关文章推荐
跟老齐学Python之??碌某?? target=
Sep 12 Python
python实现报表自动化详解
Nov 16 Python
使用Python搭建虚拟环境的配置方法
Feb 28 Python
python合并同类型excel表格的方法
Apr 01 Python
Django中URL的参数传递的实现
Aug 04 Python
python多线程分块读取文件
Aug 29 Python
Python 实现Numpy中找出array中最大值所对应的行和列
Nov 26 Python
Pytorch 使用opnecv读入图像由HWC转为BCHW格式方式
Jun 02 Python
Python+OpenCV图像处理——打印图片属性、设置存储路径、调用摄像头
Oct 22 Python
python os.listdir()乱码解决方案
Jan 31 Python
pytorch 权重weight 与 梯度grad 可视化操作
Jun 05 Python
Python中的matplotlib绘制百分比堆叠柱状图,并为每一个类别设置不同的填充图案
Apr 20 Python
使用Python设置tmpfs来加速项目的教程
Apr 17 #Python
在Python上基于Markov链生成伪随机文本的教程
Apr 17 #Python
基于scrapy实现的简单蜘蛛采集程序
Apr 17 #Python
在Python的Django框架中实现Hacker News的一些功能
Apr 17 #Python
由Python运算π的值深入Python中科学计算的实现
Apr 17 #Python
在Python中实现贪婪排名算法的教程
Apr 17 #Python
在Linux下调试Python代码的各种方法
Apr 17 #Python
You might like
PHP5 的对象赋值机制介绍
2011/08/02 PHP
PHP中的生成XML文件的4种方法分享
2012/10/06 PHP
查找php配置文件php.ini所在路径的二种方法
2014/05/26 PHP
php浏览历史记录的方法
2015/03/10 PHP
CodeIgniter实现从网站抓取图片并自动下载到文件夹里的方法
2015/06/17 PHP
PHP获取文件夹大小函数用法实例
2015/07/01 PHP
Aster vs KG BO3 第一场2.18
2021/03/10 DOTA
JavaScript进阶教程(第四课第一部分)
2007/04/05 Javascript
用jquery实现下拉菜单效果的代码
2010/07/25 Javascript
JavaScript打字小游戏代码
2011/12/26 Javascript
JS判断字符串长度的5个方法(区分中文和英文)
2014/03/18 Javascript
window.location.href的用法(动态输出跳转)
2014/08/09 Javascript
JS模式之简单的订阅者和发布者模式完整实例
2015/06/30 Javascript
js实现当前输入框高亮显示的方法
2015/08/19 Javascript
基于JavaScript获取鼠标位置的各种方法
2015/12/16 Javascript
深入理解JavaScript中Ajax
2016/08/02 Javascript
微信小程序 122100版本更新问题解决方案
2016/12/22 Javascript
深入理解nodejs中Express的中间件
2017/05/19 NodeJs
小程序登录之支付宝授权的实现示例
2019/12/13 Javascript
python读取excel指定列数据并写入到新的excel方法
2018/07/10 Python
python+selenium实现简历自动刷新的示例代码
2019/05/20 Python
Python语法分析之字符串格式化
2019/06/13 Python
Python3合并两个有序数组代码实例
2020/08/11 Python
python 密码学示例——理解哈希(Hash)算法
2020/09/21 Python
销售总监岗位职责
2014/01/04 职场文书
《春天来了》教学反思
2014/04/07 职场文书
商场消防安全责任书
2014/07/29 职场文书
初中国旗下的演讲稿
2014/08/28 职场文书
护士工作失误检讨书
2014/09/14 职场文书
物业客服专员岗位职责
2015/04/07 职场文书
新员工辞职信范文
2015/05/12 职场文书
复兴之路纪录片观后感
2015/06/02 职场文书
嘉年华活动新闻稿
2015/07/17 职场文书
2016年记者节感言
2015/12/08 职场文书
2016年小学推普宣传周活动总结
2016/04/06 职场文书
python 如何用terminal输入参数
2021/05/25 Python