详解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中不同进制的语法及转换方法分析
Jul 27 Python
Python多进程原理与用法分析
Aug 21 Python
Pycharm设置utf-8自动显示方法
Jan 17 Python
使用Python的SymPy库解决数学运算问题的方法
Mar 27 Python
python使用wxpy实现微信消息防撤回脚本
Apr 29 Python
Python实现微信翻译机器人的方法
Aug 13 Python
Python求正态分布曲线下面积实例
Nov 20 Python
Python使用循环神经网络解决文本分类问题的方法详解
Jan 16 Python
pyecharts绘制中国2020肺炎疫情地图的实例代码
Feb 12 Python
Python字符串split及rsplit方法原理详解
Jun 29 Python
Django框架安装及项目创建过程解析
Sep 14 Python
python小型的音频操作库mp3Play
Apr 24 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
《星际争霸2》终章已出 RTS时代宣告终结
2017/02/07 星际争霸
PHP面向接口编程 耦合设计模式 简单范例
2011/03/23 PHP
第4章 数据处理-php字符串的处理-郑阿奇(续)
2011/07/04 PHP
使用phpexcel类实现excel导入mysql数据库功能(实例代码)
2016/05/12 PHP
PHP实现移除数组中为空或为某值元素的方法
2017/01/07 PHP
浅谈php调用python文件
2019/03/29 PHP
一实用的实现table排序的Javascript类库
2007/09/12 Javascript
javascript 通用简单的table选项卡实现
2010/05/07 Javascript
批量实现面向对象的实例代码
2013/07/01 Javascript
Jquery倒计时源码分享
2014/05/16 Javascript
鼠标悬浮停留三秒后自动显示大图js代码
2014/09/09 Javascript
AngualrJS中的Directive制作一个菜单
2016/01/26 Javascript
详解Node项目部署到云服务器上
2017/07/12 Javascript
在ES5与ES6环境下处理函数默认参数的实现方法
2018/05/13 Javascript
使用D3.js+Vue实现一个简单的柱形图
2018/08/05 Javascript
Node.js + express基本用法教程
2019/03/14 Javascript
详解vue-cli@2.x项目迁移日志
2019/06/06 Javascript
python中合并两个文本文件并按照姓名首字母排序的例子
2014/04/25 Python
Python中尝试多线程编程的一个简明例子
2015/04/07 Python
一个基于flask的web应用诞生 bootstrap框架美化(3)
2017/04/11 Python
Pycharm编辑器技巧之自动导入模块详解
2017/07/18 Python
Python调用ctypes使用C函数printf的方法
2017/08/23 Python
python Matplotlib画图之调整字体大小的示例
2017/11/20 Python
如何利用Python模拟GitHub登录详解
2019/07/15 Python
django自定义模板标签过程解析
2019/12/14 Python
Python 日期的转换及计算的具体使用详解
2020/01/16 Python
Pycharm中import torch报错的快速解决方法
2020/03/05 Python
python多进程使用函数封装实例
2020/05/02 Python
在主流系统之上安装Pygame的方法
2020/05/20 Python
出纳员岗位职责
2014/03/13 职场文书
诉讼财产保全担保书
2014/05/20 职场文书
多媒体教室标语
2014/06/26 职场文书
2014法制宣传日活动总结范文
2014/11/01 职场文书
redis 存储对象的方法对比分析
2021/08/02 Redis
一次SQL如何查重及去重的实战记录
2022/03/13 MySQL
SpringBoot前端后端分离之Nginx服务器下载安装过程
2022/08/14 Servers