我想看看我一直在研究的python3包中的特定操作发生了什么。我使用pycallgraph,它看起来很棒。但我无法弄清楚如何从输出中删除整个调用树。
我制作了一个快速脚本make_call_graphs.py
:
import doms.client.schedule as sched
from pycallgraph import PyCallGraph
from pycallgraph.output import GraphvizOutput
from pycallgraph import Config
from pycallgraph import GlobbingFilter
config = Config()
config.trace_filter = GlobbingFilter(exclude=[
'_find_and_load',
'_find_and_load.*', # Tried a few similar variations
'_handle_fromlist',
'_handle_fromlist.*',
])
with PyCallGraph(output=GraphvizOutput(output_file='schedule_hourly_call_graph.png'), config=config):
sched.hourly()
在我开始使用GlobbingFilter
之前,_find_and_load
位于我的doms
库调用堆栈之外的树顶部。似乎过滤器只删除顶级块,但每个后续调用都保留在输出中。 (见下文前后)
显然,我可以阅读结果并复制我不想看到过滤器的每一个电话,但这很愚蠢。我可以做些什么来移除doms
框之外的那一大块东西?是否有RecursiveFilter
或我可以使用的东西?
答案 0 :(得分:0)
解决方案比我原先想象的要容易得多,就在我面前:给include
的{{1}} kwarg。
GlobbingFilter