如何从pycallgraph中删除库模块或特定函数

时间:2013-08-14 17:19:08

标签: python performance-testing call-graph

我正在使用pycallgraph来分析我的代码性能。但是,对于系统函数的许多调用以及我不想记录的某些函数,调用图非常混乱。如何阻止pycallgraph报告这些电话?

1 个答案:

答案 0 :(得分:0)

Pycallgraph提供过滤功能,可以过滤掉您想要从调用图中排除的任何模块,类或函数。应在开始跟踪并传递给pycallgraph

之前定义以下函数

实施例

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跟踪开始是

pycallgraph.start_trace(filter_func=filtercalls)

这样,您在filtercalls中提供的任何模块,类或函数都将被删除。请注意,标准库中很多时候只提供模块名称是不够的。因此,在mod_ignore中包含numpy仍然会导致包含numpy.core