是否有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

http://pytools.codeplex.com/

KCacheGrind包含一个名为QCacheGrind的版本,可以在Mac OS X和Windows上运行。

Python Call Graph生成的图片与maxy的答案非常相似。 它还显示每个函数的总时间,由于某些原因,它没有反映在示例图中。

尝试Snakeviz。 非常容易安装(通过点),它是基于浏览器。

https://jiffyclub.github.io/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输出示例 。