详解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实现带验证码网站的自动登陆实现代码
Jan 12 Python
Python中设置变量访问权限的方法
Apr 27 Python
批量获取及验证HTTP代理的Python脚本
Apr 23 Python
对Python中实现两个数的值交换的集中方法详解
Jan 11 Python
Python常见数据结构之栈与队列用法示例
Jan 14 Python
搞定这套Python爬虫面试题(面试会so easy)
Apr 03 Python
Python异常处理例题整理
Jul 07 Python
关于Python核心框架tornado的异步协程的2种方法详解
Aug 28 Python
pytorch实现MNIST手写体识别
Feb 14 Python
python实现微信打飞机游戏
Mar 24 Python
python中24小时制转换为12小时制的方法
Jun 18 Python
python geopandas读取、创建shapefile文件的方法
Jun 29 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和ACCESS写聊天室(十)
2006/10/09 PHP
下拉列表多级联动dropDownList示例代码
2013/06/27 PHP
比较详细的javascript对象的property和prototype是什么一种关系
2007/08/06 Javascript
JS控件的生命周期介绍
2012/10/22 Javascript
jQuery解决下拉框select设宽度时IE 6/7/8下option超出显示不全
2013/05/27 Javascript
Windows系统下使用Sublime搭建nodejs环境
2015/04/13 NodeJs
原生JS封装ajax 传json,str,excel文件上传提交表单(推荐)
2016/06/21 Javascript
Augularjs-起步详解
2016/07/08 Javascript
使用JS读取XML文件的方法
2016/11/25 Javascript
Vue.js结合bootstrap实现分页控件
2017/03/10 Javascript
深入理解Javascript中的作用域链和闭包
2017/04/25 Javascript
vue.js实现备忘录功能的方法
2017/07/10 Javascript
jQuery实现的简单拖拽功能示例【测试可用】
2018/08/14 jQuery
JS实现可视化文件上传
2018/09/08 Javascript
利用JS代码自动删除稿件的普通弹幕功能
2019/09/20 Javascript
解决vue项目F5刷新mounted里的函数不执行问题
2019/11/05 Javascript
vue-cli或vue项目利用HBuilder打包成移动端app操作
2020/07/29 Javascript
[02:03]DOTA2亚洲邀请赛 HGT战队出场宣传片
2015/02/07 DOTA
[01:23]2019完美世界全国高校联赛(春季赛)合肥全国总决赛
2019/06/10 DOTA
python生成器generator用法实例分析
2015/06/04 Python
python中getaddrinfo()基本用法实例分析
2015/06/28 Python
tensorflow获取变量维度信息
2018/03/10 Python
Python实现线性判别分析(LDA)的MATLAB方式
2019/12/09 Python
Pytorch基本变量类型FloatTensor与Variable用法
2020/01/08 Python
Python多线程通信queue队列用法实例分析
2020/03/24 Python
查看已安装tensorflow版本的方法示例
2020/04/19 Python
关于PyCharm安装后修改路径名称使其可重新打开的问题
2020/10/20 Python
美国家具网站:Cymax
2016/09/17 全球购物
《狐假虎威》教学反思
2014/02/07 职场文书
小学五年级学生评语
2014/04/22 职场文书
文案策划专业自荐信
2014/07/07 职场文书
励志演讲稿200字
2014/08/21 职场文书
2015年度公共机构节能工作总结
2015/05/26 职场文书
python 实现定时任务的四种方式
2021/04/01 Python
MySQL中order by的使用详情
2021/11/17 MySQL
nginx代理实现静态资源访问的示例代码
2022/07/07 Servers