详解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正则匹配查询港澳通行证办理进度示例分享
Dec 27 Python
Python之eval()函数危险性浅析
Jul 03 Python
python嵌套字典比较值与取值的实现示例
Nov 03 Python
Python返回数组/List长度的实例
Jun 23 Python
python3 实现一行输入,空格隔开的示例
Nov 14 Python
django实现web接口 python3模拟Post请求方式
Nov 19 Python
pytorch-RNN进行回归曲线预测方式
Jan 14 Python
Python随机数函数代码实例解析
Feb 09 Python
Python unittest生成测试报告过程解析
Sep 08 Python
如何编写python的daemon程序
Jan 07 Python
pytest进阶教程之fixture函数详解
Mar 29 Python
pytest实现多进程与多线程运行超好用的插件
Jul 15 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
全国FM电台频率大全 - 30 宁夏回族自治区
2020/03/11 无线电
PHP和.net中des加解密的实现方法
2013/02/27 PHP
php读取mysql中文数据出现乱码的解决方法
2013/08/16 PHP
PHP在网页中动态生成PDF文件详细教程
2014/07/05 PHP
通过PHP自带的服务器来查看正则匹配结果的方法
2015/12/24 PHP
PHP自定义函数实现数组比较功能示例
2017/10/19 PHP
PHP简单实现解析xml为数组的方法
2018/05/02 PHP
laravel-admin的多级联动方法
2019/09/30 PHP
SharePoint 客户端对象模型 (一) ECMA Script
2011/05/22 Javascript
使用Post提交时须将空格转换成加号的解释
2013/01/14 Javascript
jquery 表格的增行删行实现思路
2013/03/21 Javascript
jQuery实现可收缩展开的级联菜单实例代码
2013/11/27 Javascript
javascript实例--教你实现扑克牌洗牌功能
2014/05/15 Javascript
javascript入门教程基础篇
2015/11/16 Javascript
JavaScript事件类型中焦点、鼠标和滚轮事件详解
2016/01/25 Javascript
JavaScript简单下拉菜单特效
2016/09/13 Javascript
JavaScript该如何学习 怎样轻松学习JavaScript
2017/06/12 Javascript
JQuery 选择器、DOM节点操作练习实例
2017/09/28 jQuery
Angular2监听页面大小变化的解决方法
2017/10/09 Javascript
JS中offset和匀速动画详解
2018/02/06 Javascript
d3.js实现自定义多y轴折线图的示例代码
2018/05/30 Javascript
微信小程序实现打卡日历功能
2020/09/21 Javascript
vue如何自动化打包测试环境和正式环境的dist/test文件
2019/06/06 Javascript
vue 解决在微信内置浏览器中调用支付宝支付的情况
2020/11/09 Javascript
[01:20]2018DOTA2亚洲邀请赛总决赛战队Mineski晋级之路
2018/04/07 DOTA
零基础写python爬虫之使用urllib2组件抓取网页内容
2014/11/04 Python
基于Django模板中的数字自增(详解)
2017/09/05 Python
Python中Scrapy爬虫图片处理详解
2017/11/29 Python
http请求 request失败自动重新尝试代码示例
2018/01/25 Python
Python Pexpect库的简单使用方法
2019/01/29 Python
Python实现代码统计工具
2019/09/19 Python
python3.8.1+selenium实现登录滑块验证功能
2020/05/22 Python
前端水印的简单实现代码示例
2020/12/02 HTML / CSS
英国最大的在线亚洲杂货店:Red Rickshaw
2020/03/22 全球购物
Redis数据同步之redis shake的实现方法
2022/04/21 Redis
Python 使用 Frame tkraise() 方法在 Tkinter 应用程序中的Frame之间切换
2022/04/24 Python