【发布时间】:2013-08-14 17:19:08
【问题描述】:
我正在使用pycallgraph 来分析我的代码性能。但是,调用图非常混乱,有许多对系统函数的调用以及我不想记录的某些函数。如何阻止 pycallgraph 报告这些调用?
【问题讨论】:
标签: python performance-testing call-graph
我正在使用pycallgraph 来分析我的代码性能。但是,调用图非常混乱,有许多对系统函数的调用以及我不想记录的某些函数。如何阻止 pycallgraph 报告这些调用?
【问题讨论】:
标签: python performance-testing call-graph
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)
这样,您在过滤器调用中提供的任何模块、类或函数都将被删除。请注意,在标准库中仅仅提供模块名称是不够的。因此,在 mod_ignore 中包含 numpy 仍然会导致 numpy.core 被包含
【讨论】: