详解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线程的两种编程方式
Apr 14 Python
Python设置默认编码为utf8的方法
Jul 01 Python
详解Python异常处理中的Finally else的功能
Dec 29 Python
python3获取两个日期之间所有日期,以及比较大小的实例
Apr 08 Python
Python八大常见排序算法定义、实现及时间消耗效率分析
Apr 27 Python
django项目搭建与Session使用详解
Oct 10 Python
详解Python中的测试工具
Jun 09 Python
python网络编程 使用UDP、TCP协议收发信息详解
Aug 29 Python
Python itertools.product方法代码实例
Mar 27 Python
jupyter notebook的安装与使用详解
May 18 Python
keras小技巧——获取某一个网络层的输出方式
May 23 Python
Flask中jinja2的继承实现方法及实例
Mar 03 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安全配置
2006/12/06 PHP
关于PHP模板Smarty的初级使用方法以及心得分享
2013/06/21 PHP
6种php上传图片重命名的方法实例
2013/11/04 PHP
PHP针对常规模板引擎中与CSS/JSON冲突的解决方法
2014/08/19 PHP
PHP中echo和print的区别
2014/08/28 PHP
php的debug相关函数用法示例
2016/07/11 PHP
一个用javascript写的select支持上下键、首字母筛选以及回车取值的功能
2009/09/09 Javascript
让人印象深刻的10个jQuery手风琴效果应用
2012/05/08 Javascript
jquery选择器需要注意的问题
2014/11/26 Javascript
基于jQuery实现二级下拉菜单效果
2016/02/01 Javascript
JS动态增删表格行的方法
2016/03/03 Javascript
jQuery实现Table表格隔行变色及高亮显示当前选择行效果示例
2017/02/14 Javascript
bootstrap轮播图示例代码分享
2017/05/17 Javascript
解决微信小程序scroll-view组件无横向滚动的问题
2020/02/04 Javascript
js实现烟花特效
2020/03/02 Javascript
微信小程序canvas实现签名功能
2021/01/19 Javascript
[02:56]《DAC最前线》之国外战队抵达上海备战亚洲邀请赛
2015/01/28 DOTA
python开发之thread线程基础实例入门
2015/11/11 Python
Python基础之getpass模块详细介绍
2017/08/10 Python
解决python 无法加载downsample模型的问题
2018/10/25 Python
利用纯CSS3实现tab选项卡切换示例代码
2016/09/21 HTML / CSS
台湾网友喜爱的综合型网路购物商城:Yahoo! 奇摩购物中心
2018/03/10 全球购物
Origins悦木之源香港官网:雅诗兰黛集团高端植物护肤品牌
2018/03/21 全球购物
承诺书格式
2014/06/03 职场文书
高三励志标语
2014/06/05 职场文书
医德考评自我评价
2014/09/14 职场文书
企业领导班子四风对照检查材料
2014/09/27 职场文书
镇党政领导班子民主生活会思想汇报
2014/10/11 职场文书
民政局离婚协议书范本
2014/10/20 职场文书
党员转正大会主持词
2015/07/02 职场文书
MySQL 隔离数据列和前缀索引的使用总结
2021/05/14 MySQL
redis内存空间效率问题的深入探究
2021/05/17 Redis
ROS系统将python包编译为可执行文件的简单步骤
2021/07/25 Python
Smart 2 车辆代号 HC11 全新谍照曝光
2022/04/21 数码科技
PyTorch中permute的使用方法
2022/04/26 Python
Mysql将字符串按照指定字符分割的正确方法
2022/05/30 MySQL