详解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库urllib与urllib2主要区别分析
Jul 13 Python
深入解析Python编程中JSON模块的使用
Oct 15 Python
Python用Bottle轻量级框架进行Web开发
Jun 08 Python
python使用rpc框架gRPC的方法
Aug 24 Python
python使用pipeline批量读写redis的方法
Feb 18 Python
如何使用python爬虫爬取要登陆的网站
Jul 12 Python
Python-Seaborn热图绘制的实现方法
Jul 15 Python
使用Matplotlib 绘制精美的数学图形例子
Dec 13 Python
详解用Python调用百度地图正/逆地理编码API
Jul 02 Python
Python常用数字处理基本操作汇总
Sep 10 Python
如何用PyPy让你的Python代码运行得更快
Dec 02 Python
Pytorch可视化的几种实现方法
Jun 10 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.MVC的模板标签系统(五)
2006/09/05 PHP
php5 non-thread-safe和thread-safe这两个版本的区别分析
2010/03/13 PHP
PHP中的错误处理、异常处理机制分析
2012/05/07 PHP
PHP中4种常用的抓取网络数据方法
2015/06/04 PHP
使用URL传输SESSION信息
2015/07/14 PHP
php常用正则函数实例小结
2016/12/29 PHP
javascript 日期时间函数(经典+完善+实用)
2009/05/27 Javascript
jQuery 操作option的实现代码
2011/03/03 Javascript
基于jquery打造的百分比动态色彩条插件
2012/09/19 Javascript
js 程序执行与顺序实现详解
2013/05/13 Javascript
JS实现控制表格行内容垂直对齐的方法
2015/03/30 Javascript
CSS图片响应式 垂直水平居中
2015/08/14 Javascript
JS实现方向键切换输入框焦点的方法
2015/08/19 Javascript
卸载安装Node.js与npm过程详解
2016/08/15 Javascript
AngularJS  $on、$emit和$broadcast的使用
2016/09/05 Javascript
JS实现页面跳转参数不丢失的方法
2016/11/28 Javascript
element-ui中select组件绑定值改变,触发change事件方法
2018/08/24 Javascript
分享一个vue项目“脚手架”项目的实现步骤
2019/05/26 Javascript
Vue+tracking.js 实现前端人脸检测功能
2020/04/16 Javascript
[31:33]2014 DOTA2国际邀请赛中国区预选赛 TongFu VS DT 第一场
2014/05/23 DOTA
高效使用Python字典的清单
2018/04/04 Python
pandas系列之DataFrame 行列数据筛选实例
2018/04/12 Python
解决django后台样式丢失,css资源加载失败的问题
2019/06/11 Python
python中for循环变量作用域及用法详解
2019/11/05 Python
Python使用jupyter notebook查看ipynb文件过程解析
2020/06/02 Python
浅谈opencv自动光学检测、目标分割和检测(连通区域和findContours)
2020/06/04 Python
印度最大的酒店品牌网络:OYO Rooms
2016/07/24 全球购物
乐高奥地利官方商店:LEGO Shop AT
2019/07/16 全球购物
MUGLER官方网站:蒂埃里·穆勒香水
2019/11/26 全球购物
史上最全面的Java面试题汇总!
2015/02/03 面试题
个人批评与自我批评
2014/10/15 职场文书
毕业生对母校寄语
2015/02/26 职场文书
2015年英语教研组工作总结
2015/05/23 职场文书
四风之害观后感
2015/06/09 职场文书
Vue CLI中模式与环境变量的深入详解
2021/05/30 Vue.js
CSS浮动引起的高度塌陷问题
2022/08/05 HTML / CSS