gpt4 book ai didi

python - 为什么 nosetests 在执行之前等待两秒钟?

转载 作者:太空宇宙 更新时间:2023-11-04 00:36:24 25 4
gpt4 key购买 nike

当我在一个项目中运行 nosetests 时,它总是至少需要 2 秒来执行,即使没有测试,或者测试是微不足道的(例如 assert_equal(1,1 ))

为什么 nosetests 这么慢?

2 秒可能看起来并不长,但它让真正快速的开发周期变得不可能。

这困扰了我很长时间——如果可能的话,我很乐意实现一个优雅的解决方法。

编辑:添加了重现代码。

这是test_nose_stuff.py:

from nose.tools import assert_equal, assert_dict_equal

def test_stuff():
pass

从只包含一个文件的目录:

$ time nosetests
.
----------------------------------------------------------------------
Ran 1 test in 0.002s

OK

real 0m1.103s
user 0m0.585s
sys 0m0.237s

在反复试验中,实际执行时间从 0.5 秒到 1.2 秒不等。

我正在运行 python 2.7.13,通过 conda 安装,nosetests 版本 1.3.7。

最佳答案

我决定分析一下,启动时nose大部分时间都在初始化pkg_resources(来自setuptools的插件框架)

我的分析脚本基本上是这样的:

python -m cProfile -o stats.pstats $(which nosetests)
gprof2dot.py --skew=.1 -wn3 -f pstats stats.pstats | dot -Tsvg -o stats.svg

我正在使用的 gprof2dot.py 是实际项目的一个分支,因此 svg 没有那么损坏:https://github.com/Yelp/gprof2dot

https://i.fluffy.cc/6KxlHKw44TSbdn2WGkWtskBrfd4RdpBK.svg

如果安装了很多包,pkg_resources 需要很长时间来初始化。

有了这个最小的 pip 卡住:

$ pip freeze
nose==1.3.7
wheel==0.24.0
$ time nosetests
.
----------------------------------------------------------------------
Ran 1 test in 0.001s

OK

real 0m0.166s
user 0m0.120s
sys 0m0.012s

安装了更多的包:

$ pip freeze | wc -l
430
$ time nosetests
.
----------------------------------------------------------------------
Ran 1 test in 0.001s

OK

real 0m0.501s
user 0m0.360s
sys 0m0.076s

这次时间急剧增加

关于python - 为什么 nosetests 在执行之前等待两秒钟?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43855175/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com