使用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使用Scrapy爬取妹子图
May 28 Python
python中函数总结之装饰器闭包详解
Jun 12 Python
python logging 日志轮转文件不删除问题的解决方法
Aug 02 Python
Python数据分析之真实IP请求Pandas详解
Nov 18 Python
Python中表示字符串的三种方法
Sep 06 Python
Python cookbook(数据结构与算法)筛选及提取序列中元素的方法
Mar 19 Python
Python实现将数据框数据写入mongodb及mysql数据库的方法
Apr 02 Python
python增加矩阵维度的实例讲解
Apr 04 Python
Python判断两个文件是否相同与两个文本进行相同项筛选的方法
Mar 01 Python
详解Python time库的使用
Oct 10 Python
Python多重继承之菱形继承的实例详解
Feb 12 Python
Python进行特征提取的示例代码
Oct 15 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
正义联盟的终局之战《天启星战争》将成为DC动画宇宙的最后一部
2020/04/09 欧美动漫
php模板函数 正则实现代码
2012/10/15 PHP
PHP计算加权平均数的方法
2015/07/16 PHP
Yii中实现处理前后台登录的新方法
2015/12/28 PHP
用js实现的检测浏览器和系统的函数
2009/04/09 Javascript
js 小数取整的函数
2010/05/10 Javascript
JS运行耗时操作的延时显示方法
2010/11/19 Javascript
JavaScript ( (__ = !$ + $)[+$] + ({} + $)[_/_] +({} + $)[_/_] )
2011/02/25 Javascript
基于jquery创建的一个图片、视频缓冲的效果样式插件
2012/08/28 Javascript
模拟jQuery中的ready方法及实现按需加载css,js实例代码
2013/09/27 Javascript
js日期范围初始化得到前一个月日期的方法
2015/05/05 Javascript
JavaScript实现获取某个元素相邻兄弟节点的prev与next方法
2016/01/25 Javascript
Ajax异步文件上传与NodeJS express服务端处理
2017/04/01 NodeJs
AngularJS实现表单验证功能详解
2017/10/12 Javascript
详解Js中的模块化是如何实现的
2017/10/18 Javascript
详解webpack性能优化——DLL
2017/10/20 Javascript
使用Bootstrap和Vue实现用户信息的编辑删除功能
2017/10/25 Javascript
微信小程序如何使用globalData的方法
2019/06/06 Javascript
如何在微信小程序中实现Mixins方案
2019/06/20 Javascript
JavaScript提升机制Hoisting详解
2019/10/23 Javascript
vue.js click点击事件获取当前元素对象的操作
2020/08/07 Javascript
微信小程序实现点击导航标签滚动定位到对应位置
2020/11/19 Javascript
Python代码调试的几种方法总结
2015/04/15 Python
Python文档生成工具pydoc使用介绍
2015/06/02 Python
Python django实现简单的邮件系统发送邮件功能
2017/07/14 Python
python实现任意位置文件分割的实例
2018/12/14 Python
详解pandas.DataFrame中删除包涵特定字符串所在的行
2019/04/04 Python
python获取指定日期范围内的每一天,每个月,每季度的方法
2019/08/08 Python
Python虚拟环境库virtualenvwrapper安装及使用
2020/06/17 Python
Python调用C语言程序方法解析
2020/07/07 Python
牵手50香港:专为黄金岁月的单身人士而设的交友网站
2020/08/14 全球购物
幼师自我鉴定范文
2013/10/01 职场文书
咖啡店的创业计划书,让你hold不住
2014/01/03 职场文书
预备党员入党思想汇报
2014/01/04 职场文书
竞选班长的演讲稿
2014/04/24 职场文书
「女孩的钓鱼慢活」全新版权绘公布
2022/03/21 日漫