我想看看我一直在处理的python3包中的特定操作发生了什么。我用的是比例尺,看上去很棒。但我不知道如何从输出中删除整个调用树。
我做了一个快速脚本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位于_find_and_load库调用堆栈之外的树的顶端。似乎过滤器只删除了顶层块,但是后续的每个调用都保留在输出中。(见下文前后)
显然,我可以读取结果,并将每个我不想看到的调用复制到过滤器中,但这是愚蠢的。我该怎么做才能把这整块东西移出我的doms盒呢?有什么RecursiveFilter或者什么我可以用的吗?
在此之前:

之后:

发布于 2017-06-13 19:10:40
解决方案比我最初想象的要简单得多,就在我面前:include kwarg提供给GlobbingFilter。
config.trace_filter = GlobbingFilter(include=['__main__', 'doms.*'])https://stackoverflow.com/questions/44336973
复制相似问题