我现在使用cProfile但我觉得编写pstats代码只是为了查询统计数据很乏味。
我正在寻找一个可视化工具,向我展示我的Python代码在CPU时间和内存分配方面的作用。
Java世界中的一些示例是visualvm和JProfiler。
我知道Linux的KCachegrind,但我更喜欢可以在Windows / Mac上运行而无需安装KDE的东西。
答案 0 :(得分:73)
我和朋友编写了一个名为SnakeViz的Python配置文件查看器,它在Web浏览器中运行。如果您已经成功使用RunSnakeRun,SnakeViz可能无法添加太多值,但SnakeViz更容易安装。
编辑:SnakeViz支持Python 2和3,适用于所有主要系统。
答案 1 :(得分:41)
我只知道RunSnakeRun。
前段时间还有一些关于PyDev(Eclipse)中的集成剖析器的讨论,但我不知道是否会看到光明之日。
更新:不幸的是,似乎不再维护RunSnakeRun,它不支持Python 3.
答案 2 :(得分:14)
我使用gprof2dot.py。结果显示为like this。我使用这些命令:
python -m cProfile -o profile.dat my_program.py
gprof2dot.py -f pstats profile.dat | dot -Tpng -o profile.png
您需要安装graphviz和gprof2dot.py。您可能想要convenience shell script。
答案 3 :(得分:8)
Spyder也为cProfile提供了一个非常好的gui:
答案 4 :(得分:4)
此人创建了一个图形配置文件,描述为here。也许你可以用它作为你自己工作的起点。
答案 5 :(得分:4)
Visual Studio的Python工具包含一个做得很好的图形分析器:http://www.youtube.com/watch?v=VCx7rlPyEzE&hd=1
答案 6 :(得分:3)
试试Snakeviz。非常容易安装(通过点子),它是基于浏览器的。
答案 7 :(得分:3)
KCacheGrind包含一个名为QCacheGrind的版本,它运行on Mac OS X和on Windows。
答案 8 :(得分:2)
Python Call Graph生成的图片与maxy's answer中的图片非常相似。它还显示了每个函数的总时间,由于某种原因,它没有反映在示例图中。
答案 9 :(得分:1)
我编写了一个基于浏览器的可视化工具profile_eye,它可以在gprof2dot的输出上运行。
gprof2dot非常适合处理许多分析工具输出,并且在图形元素放置方面做得很好。最终渲染是静态图形,通常非常混乱。
使用d3.js,可以通过未聚焦元素,工具提示和fisheye distortion的相对淡化来消除大部分混乱。
要进行比较,请参阅profile_eye's visualization的canonical example used by gprof2dot。特别是对于Python,请参阅a cProfile output example。
答案 10 :(得分:1)
考虑 pyflame + flamegraph
Pyflame:用于Python +火焰图的Ptracing Profiler
https://github.com/uber/pyflame
您可以使用pyflame跟踪正在运行的python进程。
答案 11 :(得分:0)
我使用plop并发现它非常轻。快速了解perf。