Python中的调用图分析器

时间:2010-11-03 06:16:20

标签: python profiling

在我的python程序中,我使用了很多模块,并试图计算所调用的函数和涉及的调用链。在python中是否有一个工具/模块可以为我提供这些统计信息。

3 个答案:

答案 0 :(得分:6)

我用过这个。它不能用于我的目的,因为我的应用程序有多个线程同时运行,我最终得到12000个链接,graphviz无法编译它。但是当我在一个线程上运行它时它就起作用了。

http://pycallgraph.slowchop.com/

答案 1 :(得分:3)

pydoc -k profile

将为您提供系统中的内容列表。我使用了profile和cProfile。

这很简单:


if __name__ == '__main__':
 if PROFILING:
  import cProfile
  cProfile.run("main()")
 else:
  main()

答案 2 :(得分:1)

六年后,我有同样的问题,一些people recommend使用KCachegrind来显示调用链。虽然它对Linux用户来说是一个有效的选择,但它很难在Mac OSX上安装,也可能在Windows上安装。

最后,我正在使用gprof2dot。只需几个命令,您就可以获得富有表现力的调用图:

python -m cProfile -o output.pstats path/to/your/script arg1 arg2
gprof2dot.py -f pstats output.pstats | dot -Tpng -o output.png

简单的工具,快速的结果:检查出来:https://github.com/jrfonseca/gprof2dot

修改

现在我发现你也可以通过brew获得 KCachegrind brew install qcachekrind