Python中的调用图分析器
在我的Python程序中,我用了很多模块,现在想统计一下被调用的函数数量以及它们之间的调用关系。请问Python中有没有什么工具或模块可以帮我获取这些统计信息?
3 个回答
1
六年后我还是有同样的问题,有些人推荐使用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
3
使用命令 pydoc -k profile
可以列出你系统上有哪些相关的内容。我用过 profile 和 cProfile。
这操作非常简单:
if __name__ == '__main__':
if PROFILING:
import cProfile
cProfile.run("main()")
else:
main()
6
我试过这个方法。对我来说不太管用,因为我的应用程序同时有很多线程在运行,结果我得到了12000个链接,而graphviz无法处理这么多链接。不过,当我在单个线程上运行时,它是有效的。