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

 更新时间:2015年04月17日 14:59:41   投稿:goldensun  
这篇文章主要介绍了使用Python设置tmpfs来加速项目的教程,文中给出方法使用Python脚本将tmpfs保存于内存中的程序存储到本地硬盘上,需要的朋友可以参考下

 对我当前工程进行全部测试需要花费不少时间。既然有 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区块链简易版交易实现示例

    这篇文章主要为大家介绍了python区块链简易版交易实现示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-05-05
  • 在 Python 中如何将天数添加到日期

    在 Python 中如何将天数添加到日期

    这篇文章主要介绍了在 Python 中将天数添加到日期,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-03-03
  • 浅析对torch.unsqueeze()函数理解

    浅析对torch.unsqueeze()函数理解

    torch.unsqueeze()函数起到升维的作用,dim等于几表示在第几维度加一,这篇文章主要介绍了对torch.unsqueeze()函数理解深度解析,感兴趣的朋友跟随小编一起看看吧
    2024-06-06
  • 用Python编写一个高效的端口扫描器的方法

    用Python编写一个高效的端口扫描器的方法

    这篇文章主要介绍了用Python编写一个高效的端口扫描器的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-12-12
  • python 实现百度网盘非会员上传超过500个文件的方法

    python 实现百度网盘非会员上传超过500个文件的方法

    这篇文章主要介绍了python 实现百度网盘非会员上传超过500个文件的方法,帮助大家更好的利用python解决问题,感兴趣的朋友可以了解下
    2021-01-01
  • Python VTK映射三维模型表面距离

    Python VTK映射三维模型表面距离

    这篇文章主要介绍了Python VTK映射三维模型表面距离,通过如何使用VTK读取图片计算两个三维模型(stl)的表面距离,并将其距离值映射到模型上展开主题,需要的朋友可以参考一下
    2022-04-04
  • Python3多目标赋值及共享引用注意事项

    Python3多目标赋值及共享引用注意事项

    这篇文章主要介绍了Python3多目标赋值及共享引用注意事项,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-05-05
  • pymysql模块使用简介与示例

    pymysql模块使用简介与示例

    这篇文章主要介绍了pymysql模块使用的相关资料,帮助大家更好的利用python操作MySQL数据库,感兴趣的朋友可以了解下
    2020-11-11
  • Python如何用str.format()批量生成网址(豆瓣读书为例)

    Python如何用str.format()批量生成网址(豆瓣读书为例)

    这篇文章主要介绍了Python如何用str.format()批量生成网址(豆瓣读书为例),文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09
  • python 全文检索引擎详解

    python 全文检索引擎详解

    这篇文章主要介绍了python 全文检索引擎详解的相关资料,需要的朋友可以参考下
    2017-04-04

最新评论