如何使用过滤器

时间:2017-06-02 20:29:47

标签: python-3.x pycallgraph

我想看看我一直在研究的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或我可以使用的东西?

在: enter image description here 后: enter image description here

1 个答案:

答案 0 :(得分:0)

解决方案比我原先想象的要容易得多,就在我面前:给include的{​​{1}} kwarg。

GlobbingFilter