详解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 list语法学习(带例子)
Nov 01 Python
Python使用Django实现博客系统完整版
Sep 29 Python
使用python 3实现发送邮件功能
Jun 15 Python
详解python中的Turtle函数库
Nov 19 Python
Python数据可视化库seaborn的使用总结
Jan 15 Python
使用python itchat包爬取微信好友头像形成矩形头像集的方法
Feb 21 Python
如何通过雪花算法用Python实现一个简单的发号器
Jul 03 Python
python网络编程 使用UDP、TCP协议收发信息详解
Aug 29 Python
Python 中的pygame安装与配置教程详解
Feb 10 Python
Python 实现网课实时监控自动签到、打卡功能
Mar 12 Python
关于python 跨域处理方式详解
Mar 28 Python
matplotlib阶梯图的实现(step())
Mar 02 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
2015/02/05 PHP
js 屏蔽鼠标右键脚本附破解方法
2009/12/03 Javascript
js整数字符串转换为金额类型数据(示例代码)
2013/12/26 Javascript
js数组中如何随机取出一个值
2014/06/13 Javascript
四种参数传递的形式——URL,超链接,js,form表单
2015/07/24 Javascript
D3.js封装文本实现自动换行和旋转平移等功能
2016/10/14 Javascript
Bootstrap弹出框modal上层的输入框不能获得焦点问题的解决方法
2016/12/13 Javascript
JavaScript优化以及前段开发小技巧
2017/02/02 Javascript
详解ECMAScript6入门--Class对象
2017/04/27 Javascript
jquery请求servlet实现ajax异步请求的示例
2017/06/03 jQuery
jQuery Pagination分页插件_动力节点Java学院整理
2017/07/17 jQuery
JS 中使用Promise 实现红绿灯实例代码(demo)
2017/10/20 Javascript
在 Vue-CLI 中引入 simple-mock实现简易的 API Mock 接口数据模拟
2018/11/28 Javascript
[03:02]2020完美世界城市挑战赛(秋季赛)总决赛回顾
2021/03/11 DOTA
在Django的模型中执行原始SQL查询的方法
2015/07/21 Python
Python通过90行代码搭建一个音乐搜索工具
2015/07/29 Python
Python中内置的日志模块logging用法详解
2016/07/12 Python
Python爬取商家联系电话以及各种数据的方法
2018/11/10 Python
Python unittest 简单实现参数化的方法
2018/11/30 Python
Python 使用threading+Queue实现线程池示例
2019/12/21 Python
django2.2 和 PyMySQL版本兼容问题
2020/02/17 Python
Python实现aes加密解密多种方法解析
2020/05/15 Python
Python切片列表字符串如何实现切换
2020/08/06 Python
Python 如何查找特定类型文件
2020/08/17 Python
css3动画 小球滚动 js控制动画暂停
2019/11/29 HTML / CSS
2分钟教你实现环形/扇形菜单(基础版)
2020/01/15 HTML / CSS
智能室内花园:Click & Grow
2021/01/29 全球购物
.NET里面什么时候需要调用垃圾回收
2015/06/01 面试题
JAVA程序设计笔试题面试题一套
2015/07/28 面试题
甜品蛋糕店创业计划书范文
2014/02/06 职场文书
党的群众路线教育实践活动宣传标语口号
2014/06/06 职场文书
2014年祖国生日寄语
2014/09/19 职场文书
2014新生大学四年计划书
2014/09/21 职场文书
面试通知短信
2015/04/20 职场文书
英语投诉信范文
2015/07/03 职场文书
Nebula Graph解决风控业务实践
2022/03/31 MySQL