首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何防止pycallgraph进入标准库函数?

如何防止pycallgraph进入标准库函数?
EN

Stack Overflow用户
提问于 2012-10-31 10:21:10
回答 2查看 3.3K关注 0票数 15

我使用命令行中的愈伤图来描述和绘制一个相对简单的程序的调用图。但是,生成的映像包括标准库(线程、json、套接字)的内部,即使我没有使用-s命令行选项。使用-e选项排除这些模块没有任何效果,使用-i将生成一个空调用图。我也尝试过cProfile,但它只绘制主线程。

如何才能使pycallgraph只显示代码中的调用?目前的混乱结果是无用的。

编辑:我使用的是0.5.1,可以通过easy_install获得。运行pycallGraph./cursesclient.py输出如下:

。如您所见,pycallgraph显示了模块json、re、编码、套接字和线程的内部。Re和编码在我的代码中从来没有直接调用过,而是分别通过json和套接字调用的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-11-24 15:29:55

pycallgraph有一个无文档的stop_trace()方法,您可以使用该方法排除代码的部分。有点像

代码语言:javascript
复制
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')

这就是你想要的吗?

来源

票数 5
EN

Stack Overflow用户

发布于 2013-08-14 15:25:06

Pycallgraph提供了过滤功能,可以过滤出您希望从调用图中排除的任何模块、类或函数。在启动跟踪并传递给pycallgraph之前,应该定义以下函数

示例

代码语言:javascript
复制
def filtercalls(call_stack, modul, clas, func, full):
    mod_ignore = ['shutil','scipy.optimize','re','os','sys','json']
    func_ignore = ['CustomFunctionName','pdbcall']
    clas_ignore = ['pdb']
    return modul not in mod_ignore and func not in func_ignore and clas not in clas_ignore

pycallgraph跟踪开始是

代码语言:javascript
复制
pycallgraph.start_trace(filter_func=filtercalls)

这样,您在过滤器调用中提供的任何模块、类或函数都将被删除。请注意,在标准库中只提供模块名是不够的。因此,在mod_ignore中包含numpy仍然会导致numpy.core被包括在内。

票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13155735

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档