详解Python中__str__和__repr__方法的区别

作者:goldensun 时间:2023-02-28 17:29:17 

 对我当前工程进行全部测试需要花费不少时间。既然有 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
0
投稿

猜你喜欢

  • 在HTML中,常见的URL有多种表示方式:

    2009-07-28 12:18:00
  • 解决Vue axios post请求,后台获取不到数据的问题方法

    2024-05-09 09:38:38
  • 淘宝网获亚洲最佳在线客户体验大奖

    2009-03-31 12:55:00
  • python中hashlib模块用法示例

    2023-03-20 12:20:13
  • 详解Python字典查找性能

    2022-05-06 10:45:34
  • C# 连接SQL数据库的方法及常用连接字符串

    2024-01-16 21:49:47
  • python3.0 字典key排序

    2022-06-03 15:07:50
  • js+ajax实现获取文件大小的方法

    2023-08-12 00:22:07
  • python解压TAR文件至指定文件夹的实例

    2023-09-29 04:00:18
  • python空值判断方式(if xxx和if xxx is None的区别及说明)

    2022-04-01 20:18:42
  • 浅谈Vue使用Cascader级联选择器数据回显中的坑

    2024-04-10 13:47:27
  • mysql+mybatis下全文搜索的使用方法

    2024-01-21 22:07:09
  • MySQL数据库管理必备工具 phpMyAdmin 3.0

    2008-12-10 14:12:00
  • Python3.x检查内存可用大小的两种实现

    2022-03-24 07:17:03
  • 机器学习python实战之手写数字识别

    2021-06-29 03:07:07
  • python 获取字典特定值对应的键的实现

    2022-07-01 19:25:21
  • Python处理时间日期坐标轴过程详解

    2021-04-28 08:05:27
  • Python实现K折交叉验证法的方法步骤

    2021-08-04 13:58:25
  • 获取MSSQL数据字典的SQL语句

    2024-01-20 11:35:16
  • Python 3.6 读取并操作文件内容的实例

    2021-11-21 16:52:14
  • asp之家 网络编程 m.aspxhome.com