详解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中处理字符串之ljust()方法的使用简介
May 19 Python
剖析Python的Twisted框架的核心特性
May 25 Python
Python实现遍历目录的方法【测试可用】
Mar 22 Python
Python实现的根据文件名查找数据文件功能示例
May 02 Python
python字符串string的内置方法实例详解
May 14 Python
python 用lambda函数替换for循环的方法
Jun 09 Python
python清除函数占用的内存方法
Jun 25 Python
django-allauth入门学习和使用详解
Jul 03 Python
python网络编程之多线程同时接受和发送
Sep 03 Python
python ubplot使用方法解析
Jan 10 Python
Python读写操作csv和excle文件代码实例
Mar 16 Python
Python importlib模块重载使用方法详解
Oct 13 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
PHP开发工具ZendStudio下Xdebug工具使用说明详解
2013/11/11 PHP
php基于mcrypt的加密解密实例
2014/10/27 PHP
10个简化PHP开发的工具
2014/12/25 PHP
PHP自定义函数获取URL中一级域名的方法
2016/08/23 PHP
PHP简单创建压缩图的方法
2016/08/24 PHP
javascript游戏开发之《三国志曹操传》零部件开发(四)用地图块拼成大地图
2013/01/23 Javascript
jQuery实现可关闭固定于底(顶)部的工具条菜单效果
2015/11/06 Javascript
jquery判断密码强度的验证代码
2020/04/22 Javascript
跟我学习javascript的垃圾回收机制与内存管理
2015/11/23 Javascript
详解JavaScript中的自定义事件编写
2016/05/10 Javascript
js判断空对象的实例(超简单)
2016/07/26 Javascript
浅谈jQuery hover(over, out)事件函数
2016/12/03 Javascript
canvas实现十二星座星空图
2017/02/14 Javascript
详解VueJs前后端分离跨域问题
2017/05/24 Javascript
JS的Ajax与后端交互数据的实例
2018/08/08 Javascript
微信小程序实现点赞业务
2021/02/10 Javascript
[15:23]教你分分钟做大人:虚空假面
2014/10/30 DOTA
python使用PyFetion来发送短信的例子
2014/04/22 Python
python实现求解列表中元素的排列和组合问题
2018/03/15 Python
python 通过xml获取测试节点和属性的实例
2018/03/31 Python
Python中pandas dataframe删除一行或一列:drop函数详解
2018/07/03 Python
Python图像处理之图像的读取、显示与保存操作【测试可用】
2019/01/04 Python
解决pycharm下os.system执行命令返回有中文乱码的问题
2019/07/07 Python
基于 Django 的手机管理系统实现过程详解
2019/08/16 Python
OpenCV+Python--RGB转HSI的实现
2019/11/27 Python
HTML5 微格式和相关的属性名称
2010/02/10 HTML / CSS
品恩科技软件测试面试题
2014/10/26 面试题
如何从一个文件档案的尾端新增记录
2016/12/02 面试题
医院实习接收函
2014/01/12 职场文书
犯错检讨书
2014/02/21 职场文书
仓库主管岗位职责
2014/03/02 职场文书
物业经理自我鉴定
2014/03/03 职场文书
2014年文学毕业生自我鉴定
2014/04/23 职场文书
2014年银行信贷员工作总结
2014/12/08 职场文书
党员思想汇报材料
2014/12/19 职场文书
2015个人简历自我评价语
2015/03/11 职场文书