使用Python设置tmpfs来加速项目的教程


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)操作方法汇总
Aug 18 Python
Python编程django实现同一个ip十分钟内只能注册一次
Nov 03 Python
TensorFlow实现创建分类器
Feb 06 Python
python3安装pip3(install pip3 for python 3.x)
Apr 03 Python
利用numpy和pandas处理csv文件中的时间方法
Apr 19 Python
python模拟表单提交登录图书馆
Apr 27 Python
python中open函数的基本用法示例
Sep 07 Python
Jupyter打开图形界面并画出正弦函数图像实例
Apr 24 Python
Python如何使用正则表达式爬取京东商品信息
Jun 01 Python
查看keras的默认backend实现方式
Jun 19 Python
公认8个效率最高的爬虫框架
Jul 28 Python
python网络爬虫实现发送短信验证码的方法
Feb 25 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
Python脚本在Appium库上对移动应用实现自动化测试
Apr 17 #Python
You might like
将PHP作为Shell脚本语言使用
2006/10/09 PHP
初次接触php抽象工厂模式(Elgg)
2010/03/21 PHP
在Win2003(64位)中配置IIS6+PHP5.2.17+MySQL5.5的运行环境
2016/04/04 PHP
在Laravel 中实现是否关注的示例
2019/10/22 PHP
基于jquery的防止大图片撑破页面的实现代码(立即缩放)
2011/10/24 Javascript
Web Inspector:关于在 Sublime Text 中调试Js的介绍
2013/04/18 Javascript
node.js中的fs.appendFileSync方法使用说明
2014/12/17 Javascript
BootStrap的Datepicker控件使用心得分享
2016/05/25 Javascript
Node.js的文件权限及读写flag详解
2016/10/11 Javascript
深入学习jQuery中的data()
2016/12/22 Javascript
详解Javascript百度地图接口开发文档中的类和方法
2017/02/07 Javascript
js实现楼层导航功能
2017/02/23 Javascript
select自定义小三角样式代码(实用总结)
2017/08/18 Javascript
jQuery实现table中两列CheckBox只能选中一个的示例
2017/09/22 jQuery
vue中element组件样式修改无效的解决方法
2018/02/03 Javascript
详解VUE单页应用骨架屏方案
2019/01/17 Javascript
微信小程序学习总结(一)项目创建与目录结构分析
2020/06/04 Javascript
跟老齐学Python之dict()的操作方法
2014/09/24 Python
python修改注册表终止360进程实例
2014/10/13 Python
Python文件去除注释的方法
2015/05/25 Python
Python编码类型转换方法详解
2016/07/01 Python
Python基于列表list实现的CRUD操作功能示例
2018/01/05 Python
python实现自动发送邮件发送多人、群发、多附件的示例
2018/01/23 Python
对numpy中shape的深入理解
2018/06/15 Python
Anaconda2 5.2.0安装使用图文教程
2018/09/19 Python
python得到电脑的开机时间方法
2018/10/15 Python
python返回数组的索引实例
2019/11/28 Python
Win系统PyQt5安装和使用教程
2019/12/25 Python
python3 字符串知识点学习笔记
2020/02/08 Python
解决CSS3的opacity属性带来的层叠顺序问题
2016/05/09 HTML / CSS
HTML5在canvas中绘制复杂形状附效果截图
2014/06/23 HTML / CSS
英国的领先快速时尚零售商:In The Style
2019/03/25 全球购物
航空大学应届生求职信
2013/11/10 职场文书
娱乐节目策划方案
2014/06/10 职场文书
社区青年志愿者活动总结
2015/05/06 职场文书
XX部保密工作制度范本
2019/08/27 职场文书