如何使用带有nosetest的cProfile --with-profile?

时间:2012-09-02 13:51:06

标签: python nose cprofile

  

nosetest --with-profile --profile-stats-file output

输出无法通过runsnake读取,因为nosetest使用hotshot,如果我想生成一个可以使用runsnake读取的文件,我需要将其转换为:

  

st = hotshot.stats.load('output')

     

st.dump_stats( 'output_new')

我可以直接使用cProfile运行测试以使用runsnake进行读取吗?

5 个答案:

答案 0 :(得分:9)

根据@squid的答案,您可以使用名为nose-cprof nose 插件,用cProfile替换鼻子默认探查器hotshot。

安装它:

pip install nose-cprof

然后像这样打电话给鼻子:

nosetests --with-cprofile

它应生成一个cProfile输出文件,然后您可以使用runsnakerun等工具进行分析。

答案 1 :(得分:3)

@ cihanpesend的回答对我来说不太有用(cProfile找不到'nosetests'),但我确实在Linux上取得了成功:

python -m cProfile -o profile.out `which nosetests` .

结果输出在runsnake中正常工作。

(据推测,在Windows上你可以用你的nosetests顶级python脚本的硬编码路径替换which nosetests。)

认为你是对的,来自nosetests的hotshot profiler的输出与runsnake不兼容。当然,对我来说,这两个人并不能一起玩得开心。

答案 2 :(得分:2)

我没有关于nosetest的信息,除了它是python项目。所以;

python -m cProfile -o outputfile nosetest

然后,

runsnake outputfile

RunSnakeRun对于可视化分析器非常有用。

注意:要运行runsnake,您必须安装wx和numpy。

更新:来自omikron的评论; runsnakerun不能支持python3配置文件输出。 (我没试过)

答案 3 :(得分:1)

或者您可以尝试使用nose-cprof插件:https://github.com/msherry/nose-cprof

用cProfile替换hotshot

答案 4 :(得分:0)

使用pyprof2calltree

$ pip install pyprof2calltree
$ nosetests --with-cprofile --profile-stats=profile.out tests/
$ pyprof2calltree -i profile.out -k

使用xdot

$ sudo apt install xdot
$ gprof2dot -f pstats profile.out | dot -Tpng -o profile.png