Is there a visual profiler for Python?
我现在使用cprofile,但我发现仅仅为了查询统计数据而编写pstats代码很乏味。
我正在寻找一个可视化工具,它向我展示了我的Python代码在CPU时间和内存分配方面所做的工作。
Java世界的一些示例是VisualVM和JPrPrror。
- 这样的东西存在吗?
- 有这样做的IDE吗?
- dtrace会有帮助吗?
我知道kcachegrind for linux,但我更喜欢不用安装kde就可以在windows/mac上运行的东西。
我和一个朋友写了一个名为snakeviz的python概要文件查看器,它在Web浏览器中运行。如果您已经成功地使用了runsnakerun snakeviz,那么它可能不会增加那么多的值,但是snakeviz更容易安装。
编辑:snakeviz支持python 2和3,并在所有主要系统上工作。
我只知道runsnakerun。
前一段时间也有人谈到Pydev(Eclipse)中的一个集成分析器,但我不知道它是否能看到曙光。
更新:不幸的是,runsnakerun似乎不再被维护,它不支持python 3。
我使用gprof2dot.py。结果是这样的。我使用这些命令:
1 2 | python -m cProfile -o profile.dat my_program.py gprof2dot.py -f pstats profile.dat | dot -Tpng -o profile.png |
您需要安装graphviz和gprof2dot.py。您可能需要一个方便的shell脚本。
Spyder还为cprofile提供了一个非常好的图形用户界面:
用于Visual Studio的python工具包含一个非常完善的图形探查器:http://www.youtube.com/watch?V=VCX7RLPYEZ&HD=1
http://pytools.codeplex.com/
此人创建了一个图形化的配置文件,如本文所述。也许你可以把它作为自己工作的起点。
kcachegrind包括一个名为qcachegrind的版本,它可以在Mac OS X和Windows上运行。
试试蛇维兹。非常容易安装(通过PIP)并且它是基于浏览器的。
https://jiffyclub.github.io/snakeviz/
python调用图生成的图片与maxy的答案非常相似。它还显示了每个函数的总时间,出于某种原因,它没有反映在示例图中。
考虑PyFlame+火焰图
pyflame:python+flamegraph的ptracing profiler
https://github.com/uber/pyflame
可以使用pyflame跟踪运行中的python进程。
我已经编写了一个基于浏览器的可视化工具profile_eye,它在gprof2dot的输出上运行。
gprof2dot非常擅长搜索许多分析工具输出,并且在图形元素放置方面做得很好。最后的渲染是一个静态图形,通常非常混乱。
使用d3.js,可以通过未聚焦元素、工具提示和鱼眼失真的相对淡入淡出来消除大部分杂波。
有关比较,请参见配置文件"Eye对gprof2dot使用的规范示例的可视化"。对于python,请参见cprofile输出示例。
我用过PLOP,发现它很轻。快速了解性能。