【发布时间】:2013-04-03 02:44:32
【问题描述】:
我正在寻找同时分析和跟踪 python 代码。我见过 python trace 和 traceback 类,也见过 python Cprofiler 和 profiler 类。
跟踪库不包含有关函数运行时间和内存量的信息,Cprofiler 库不显示每次调用该函数所花费的时间,也不显示应用程序就像跟踪一样。我正在寻找的是类似于 xdebug for php 的东西。
python
提前致谢
【问题讨论】:
我正在寻找同时分析和跟踪 python 代码。我见过 python trace 和 traceback 类,也见过 python Cprofiler 和 profiler 类。
跟踪库不包含有关函数运行时间和内存量的信息,Cprofiler 库不显示每次调用该函数所花费的时间,也不显示应用程序就像跟踪一样。我正在寻找的是类似于 xdebug for php 的东西。
python
提前致谢
【问题讨论】:
你看过profile,文档here
也看看here:
可视化分析结果
RunSnakeRun 是 Mike Fletcher 的一个 GUI 工具,它使用方形地图可视化来自 cProfile 的配置文件转储。函数/方法调用可以根据各种标准进行排序,源代码可以与可视化和调用统计一起显示。
示例用法:
runsnake some_profile_dump.prof
Gprof2Dot 是一个基于 python 的工具,可以将分析结果输出转换为可以转换为 PNG 图像或 SVG 的图形。
使用 python 2.5 的典型分析会话如下所示(在旧平台上,您需要使用实际脚本而不是 -m 选项):
python -m cProfile -o stat.prof MYSCRIPY.PY [ARGS...]
python -m pbp.scripts.gprof2dot -f pstats -o stat.dot stat.prof
dot -ostat.png -Tpng stat.dot
PyCallGraph pycallgraph 是一个 Python 模块,它为 Python 程序创建调用图。它会生成一个 PNG 文件,显示模块的函数调用及其与其他函数调用的链接、函数被调用的次数以及在该函数中花费的时间。
典型用法:
pycallgraph scriptname.py
PyProf2CallTree 是一个脚本,可帮助使用 kcachegrind 图形调用树分析器可视化使用 cProfile python 模块收集的分析数据。
典型用法:
python -m cProfile -o stat.prof MYSCRIPY.PY [ARGS...]
python pyprof2calltree.py -i stat.prof -k
【讨论】:
profile 模块只存储了 gprof2dot 等工具显示的图形的边和节点。如果 A 调用 B 和 C,B 和 C 都调用 D,并且 D 调用 E,通常不可能确切知道 E 的时间是由于 B 与 C 造成的。为了获得额外的信息,必须使用不同的分析器用过。