我使用命令行中的pycallgraph来分析和绘制一个相对简单的程序的调用图。但是,生成的图像包含标准库(线程、JSON、套接字)的内部,即使我不使用-s命令行选项。使用-e选项排除这些模块没有效果,使用-i会导致一个空的调用图。我也试过cprofile,但它只显示了主线。
如何使pycallgraph只显示代码中的调用?当前混乱的结果是无用的。
编辑:我使用的是0.5.1,可以通过简易安装获得。运行pycallgraph./cursesclient.py输出此:。如您所见,pycallgraph显示了模块JSON、RE、编码、套接字和线程的内部。Re和Encodings在我的代码中从未被直接调用,而是分别通过JSON和Socket调用。
最佳答案
pycallgraph有一个未记录的stop_trace()方法,可用于排除代码部分。有点像
import pycallgraph
import mycode
import stuff_i_dont_want_to_see
pycallgraph.start_trace()
#Initializations
pycallgraph.stop_trace()
stuff_i_dont_want_to_see()
pycallgraph.start_trace()
mycode.things()
pycallgraph.make_dot_graph('cleaner_graph.png')
这就是你想要的吗?
source