我现在使用cProfile,但是我发现编写pstats代码来查询统计数据很繁琐。
我正在寻找一个视觉工具,向我展示Python代码在CPU时间和内存分配方面的工作。
Java世界中的一些示例是visualvm和JProfiler。
- 是否存在这样的东西?
- 是否有执行此操作的IDE?
- 将dtrace的帮助吗?
我知道Linux版KCachegrind,但是我希望我可以在Windows / Mac上运行而无需安装KDE。
我现在使用cProfile,但是我发现编写pstats代码来查询统计数据很繁琐。
我正在寻找一个视觉工具,向我展示Python代码在CPU时间和内存分配方面的工作。
Java世界中的一些示例是visualvm和JProfiler。
我知道Linux版KCachegrind,但是我希望我可以在Windows / Mac上运行而无需安装KDE。
Answers:
我和一个朋友编写了一个名为SnakeViz的Python配置文件查看器,该查看器在网络浏览器中运行。如果您已经成功使用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脚本。
适用于Visual Studio的Python工具包含一个做得很好的图形分析器:http : //www.youtube.com/watch?v= VCx7rlPyEzE&hd =1
apt-get install kcachegrind
安装3个与KDE相关的库即可。
apt install kcachegrind
想要安装102个软件包,包括大约40个KDE库。
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点
试用Snakeviz。非常容易安装(通过pip),并且基于浏览器。
Python Call Graph生成的图片与maxy's answer中的图片非常相似。它还显示每个功能的总时间,由于某种原因,它没有反映在示例图中。
我已经编写了一个基于浏览器的可视化工具profile_eye,它可以对gprof2dot的输出进行操作。
gprof2dot非常擅长处理许多分析工具的输出,并且在图形元素放置方面做得很好。最终渲染是静态图形,通常非常混乱。
使用d3.js,可以通过未聚焦的元素,工具提示和鱼眼失真的相对淡入来消除很多杂乱。
为了进行比较,请参阅profile_eye对gprof2dot使用的规范示例的可视化。特别是对于Python,请参见cProfile输出示例。
考虑pyflame +火焰图
Pyflame:适用于Python + Flamegraph的跟踪分析器
https://github.com/uber/pyflame
您可以使用pyflame跟踪正在运行的python进程。