是否有Python的可视化分析器?
我现在使用cProfile,但是我发现编写pstats代码来查询统计数据是很繁琐的。
我正在寻找一个可视化工具,向我展示了我的Python代码在CPU时间和内存分配方面所做的工作。
来自Java世界的一些例子是visualvm和JProfiler 。
- 有这样的事情吗?
- 有没有这样做的IDE?
- dtrace会有帮助吗?
我知道Linux的KCachegrind ,但我更喜欢一些可以在Windows / Mac上运行而不安装KDE的东西。
一位朋友和我写了一个名为SnakeViz的Pythonconfiguration文件查看器,它运行在Web浏览器中。 如果您已经成功使用RunSnakeRun SnakeViz可能不会增加那么多的价值,但是SnakeViz安装起来要容易得多。
编辑:SnakeViz支持Python 2和3,并在所有主要系统上工作。
我只知道RunSnakeRun 。
前段时间还有一些关于PyDev(Eclipse)中的集成分析器的讨论,但是我不知道是否能看到白天的亮点。
更新:不幸的是,似乎RunSnakeRun不再维护,它不支持Python 3。
我使用gprof2dot.py。 结果看起来像这样 。 我使用这些命令:
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提供了一个相当不错的gui:
此人创build了一个graphicsconfiguration文件, 在这里描述。 也许你可以用它作为你自己工作的起点。
用于Visual Studio的Python工具包含一个非常完善的graphics分析器: http : //www.youtube.com/watch?v = VCx7rlPyEzE &hd = 1
KCacheGrind包含一个名为QCacheGrind的版本,可以在Mac OS X和Windows上运行。
Python Call Graph生成的图片与maxy的答案非常相似。 它还显示每个函数的总时间,由于某些原因,它没有反映在示例图中。
尝试Snakeviz。 非常容易安装(通过点),它是基于浏览器。
考虑pyflame + flamegraph
Pyflame:Python + flamegraph的Ptracing Profiler
https://github.com/uber/pyflame
您可以使用pyflame追踪正在运行的python进程。
我用过扑通 ,发现它非常轻。 提供了一个快速的洞察性能。
我写了一个基于浏览器的可视化工具profile_eye ,它在gprof2dot的输出上运行 。
gprof2dot擅长于挖掘许多性能分析工具的输出,并且在graphics元素放置方面做得非常出色。 最终的渲染是一个静态的graphics,通常非常混乱。
使用d3.js ,可以通过相对淡化未聚焦的元素,工具提示和鱼眼失真来消除大部分混乱。
为了比较,请参阅profile_eye对 gprof2dot使用的规范示例 的可视化 。 对于Python,请参阅cProfile输出示例 。