过滤掉不相关的 cProfile 输出

Filtering out irrelevant cProfile output

我正在使用 cProfile 分析一个 Python 应用程序,我发现它的输出非常冗长。我正在使用此代码创建配置文件并将其可视化:

PYTHONPATH=. \
    python3 \
    -m cProfile \
        -s cumtime \
        -o output.cprof \
    foo/__main__.py && \
gprof2dot \
    -f pstats \
    output.cprof | \
dot -Tpdf -o output.pdf

例如,这是我使用 gprof2dot 创建的图表的一部分:

显然,这些是我不感兴趣的方法。但是,我知道我要检查的函数的名称,让我们称之为 foo:xxx:my_function。如何过滤 cProfile 输出,以便我只能查看此函数及其调用方?

我看过,但它只讲看输出的head

幸运的是,gprof2dot 有一个过滤函数名称的选项。

因此,我可以将 -z 与节点上的函数名称一起使用以仅查看后代:

python3 \
    -m cProfile \
        -s cumtime \
        -o output.cprof \
    foo/__main__.py && \
gprof2dot \
    -f pstats \
    -z "foo:xxx:my_function" \
    output.cprof | \
dot -Tpdf -o output.pdf