是否有适用于Python的可视分析器?[关闭]


99

我现在使用cProfile,但是我发现编写pstats代码来查询统计数据很繁琐。

我正在寻找一个视觉工具,向我展示Python代码在CPU时间和内存分配方面的工作。

Java世界中的一些示例是visualvmJProfiler

  • 是否存在这样的东西?
  • 是否有执行此操作的IDE?
  • dtrace的帮助吗?

我知道Linux版KCachegrind,但是我希望我可以在Windows / Mac上运行而无需安装KDE。


5
如果这样的程序还不存在,那将是一个很棒的开源项目。
卡尔2010年

@cvondrick确实存在这样的程序,并且已经提到:KCachegrind。
Devin Jeanpierre

1
@Devin,是的,但是看到问题了。:-)
卡尔2010年

您是否了解这种技术:stackoverflow.com/questions/375913/…它不是视觉的,但也不是乏味的,并且很难为它效力。
Mike Dunlavey

4
@KCacheGrind爱好者:不必安装KDE的任何理由都是不使用KCacheGrind的充分理由。
马特·乔纳

Answers:


86

我和一个朋友编写了一个名为SnakeViz的Python配置文件查看器,该查看器在网络浏览器中运行。如果您已经成功使用RunSnakeRun,则 SnakeViz可能不会添加那么多的值,但是SnakeViz的安装要容易得多。

编辑:SnakeViz支持Python 2和3,并且可以在所有主要系统上使用。


41

我只知道RunSnakeRun

前段时间也有关于PyDev(Eclipse)中的集成探查器的讨论,但是我不知道这是否会成为现实。

更新:不幸的是,似乎不再维护RunSnakeRun,并且它不支持Python 3。


+1表示RunSnakeRun。最好的工具恕我直言。
codeape 2012年

4
RunSnakeRun很好,但不幸的是,它目前在Python 3中不起作用。(2014
Ram Rachum

@Ram:感谢您提供相关信息,这很不幸:
。– nikow

1
我改用pyinstrument。这是另一种动物,但很有用。
Ram Rachum 2014年

我喜欢RunSnakeRun,但是我非常不喜欢它显示呼叫者和被呼叫者的方式。RunSnakeRun将显示每个呼叫者/被呼叫者的呼叫计数,本地时间和累积时间的“总计”值。因此,您可以拥有诸如累积时间为5秒的函数但被呼叫者累积时间为100秒的函数之类的东西。不那么直观,也不如pstats提供的有用。pstats使用与所讨论功能相关的上下文信息来为呼叫者/被呼叫者统计信息提供更多有意义的数字。不知道有其他查看器使它易于查看。
Vultaire

14

我使用gprof2dot.py。结果看起来像这样。我使用这些命令:

  python -m cProfile -o profile.dat my_program.py
  gprof2dot.py -f pstats profile.dat | dot -Tpng -o profile.png

您需要安装graphvizgprof2dot.py。您可能需要一个方便的Shell脚本


如果您输出svg而不是png(带有点-Tsvg -o profile.svg),则可以使用浏览器搜索输出图形,并且可以缩放图像而不会造成锯齿。
razeh 2015年



4

此人创造了一个图形化的配置文件,描述在这里。也许您可以将其用作自己工作的起点。


1
这很酷,但显然仅适用于C / C ++。它虽然使用python。
罗里

4

KCacheGrind包含一个称为QCacheGrind的版本,该版本可在Mac OS XWindows上运行。


此外,OP似乎会误解Linux上对KCachegrind的依赖关系。在Debian / Ubuntu / Mint上,您只需要apt-get install kcachegrind安装3个与KDE相关的库即可。
saaj 2016年

2
在Ubuntu 17.04安装上,@ saaj apt install kcachegrind想要安装102个软件包,包括大约40个KDE库。
Mark E. Haase

@mehaase刚好ubuntu:xenial可能是它的三倍,但这是针对开发环境的,我几乎没有将其视为问题。实际上apt-cache depends --recurse --no-recommends --no-suggests --no-conflicts --no-breaks --no-replaces --no-enhances --no-pre-depends kcachegrind | grep kde | grep Depends | sort -u | wc -l只说了13点
。– saaj



1

我已经编写了一个基于浏览器的可视化工具profile_eye,它可以对gprof2dot的输出进行操作

gprof2dot非常擅长处理许多分析工具的输出,并且在图形元素放置方面做得很好。最终渲染是静态图形,通常非常混乱。

使用d3.js,可以通过未聚焦的元素,工具提示和鱼眼失真的相对淡入来消除很多杂乱

为了进行比较,请参阅profile_eye对gprof2dot使用规范示例的可视化。特别是对于Python,请参见cProfile输出示例



0

我曾经使用过plop,发现它非常轻巧。快速了解性能。


vprof是一个类似的工具,也使用flamegraph,但是它也可以进行内存分析。不幸的是,它仅显示累计时间,而不显示函数花费的总时间。
goodmami
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.