过滤掉不相关的 cProfile 输出
Posted
技术标签:
【中文标题】过滤掉不相关的 cProfile 输出【英文标题】:Filtering out irrelevant cProfile output 【发布时间】:2019-11-28 14:15:01 【问题描述】:我正在使用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 输出,以便我只能查看此函数及其被调用者?
我见过this question,但它只谈论查看输出的head
。
【问题讨论】:
【参考方案1】:幸运的是,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
【讨论】:
以上是关于过滤掉不相关的 cProfile 输出的主要内容,如果未能解决你的问题,请参考以下文章
Pandas:如何将 cProfile 输出存储在 pandas DataFrame 中?
Python cProfile:如何从分析数据中过滤掉特定的调用?