使用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求斐波那契数列示例分享
Feb 14 Python
Python中的测试模块unittest和doctest的使用教程
Apr 14 Python
python 实现红包随机生成算法的简单实例
Jan 04 Python
Scrapy-redis爬虫分布式爬取的分析和实现
Feb 07 Python
python多线程之事件Event的使用详解
Apr 27 Python
Python使用cx_Oracle模块操作Oracle数据库详解
May 07 Python
带你彻底搞懂python操作mysql数据库(cursor游标讲解)
Jan 06 Python
Django 博客实现简单的全文搜索的示例代码
Feb 17 Python
Python迭代器Iterable判断方法解析
Mar 16 Python
python实现IOU计算案例
Apr 12 Python
python3中datetime库,time库以及pandas中的时间函数区别与详解
Apr 16 Python
anaconda python3.8安装后降级
Jun 11 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+javascript实现二级级联菜单的制作
2008/05/06 PHP
PHP DataGrid 实现代码
2009/08/12 PHP
如何突破PHP程序员的技术瓶颈分析
2011/07/17 PHP
网页的标准,IMG不支持onload标签怎么办
2006/06/29 Javascript
JavaScript中void(0)的具体含义解释
2007/02/27 Javascript
用js实现小球的自由移动代码
2013/04/22 Javascript
Checbox的操作含已选、未选及判断代码
2013/11/07 Javascript
JS高级调试技巧:捕获和分析 JavaScript Error详解
2014/03/16 Javascript
解决JS无法调用Controller问题的方法
2015/12/31 Javascript
AngularJS中$watch和$timeout的使用示例
2016/09/20 Javascript
D3.js实现柱状图的方法详解
2016/09/21 Javascript
如何将 jQuery 从你的 Bootstrap 项目中移除(取而代之使用Vue.js)
2017/07/17 jQuery
解决JSON.stringify()自动将中文转译成unicode的问题
2018/01/05 Javascript
Vuex 在Vue 组件中获得Vuex 状态state的方法
2018/08/27 Javascript
微信小程序云开发之模拟后台增删改查
2019/05/16 Javascript
Vue-cli3.x + axios 跨域方案踩坑指北
2019/07/04 Javascript
在vue中实现嵌套页面(iframe)
2020/07/30 Javascript
解决vant title-active-color与title-inactive-color不生效问题
2020/11/03 Javascript
[02:31]《DAC最前线》之选手酒店现场花絮
2015/01/30 DOTA
[13:55]Newbee vs Team Spirit
2018/06/07 DOTA
[01:48:04]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Elephant BO3 第一场 2月7日
2021/03/11 DOTA
在Python中处理字符串之isdecimal()方法的使用
2015/05/20 Python
基于python中theano库的线性回归
2018/08/31 Python
详解Anconda环境下载python包的教程(图形界面+命令行+pycharm安装)
2019/11/11 Python
python实现sm2和sm4国密(国家商用密码)算法的示例
2020/09/26 Python
python和C++共享内存传输图像的示例
2020/10/27 Python
Python高并发和多线程有什么关系
2020/11/14 Python
俄罗斯最大的香水和化妆品网上商店:Randewoo
2020/11/05 全球购物
超市营业员求职简历的自我评价
2013/10/17 职场文书
医科学校毕业生自荐信
2013/11/09 职场文书
优秀教师主要事迹
2014/02/01 职场文书
高三毕业寄语
2014/04/10 职场文书
2014年母亲节演讲稿范文
2014/05/07 职场文书
父亲节活动策划方案
2014/08/24 职场文书
超市仓管员岗位职责范本
2014/09/18 职场文书
乡镇群众路线整改落实情况汇报
2014/10/28 职场文书