python cprofile 显示了很多信息。可以仅限于我的代码吗

Posted

技术标签:

【中文标题】python cprofile 显示了很多信息。可以仅限于我的代码吗【英文标题】:python cprofile shows lot of information. Can it be limited to only my code 【发布时间】:2021-09-21 07:40:30 【问题描述】:

cProfile 在输出中显示了许多内置函数调用。我们可以将输出限制为我编写的代码吗?因此,在下面的示例中,我是否只能看到来自testrun 的行或来自位于同一脚本中的testrun() 调用的函数。或者可能将记录的呼叫级别限制为 2 或 3?

pr = cProfile.Profile()
pr.enable()
testrun()
pr.disable()
pr.print_stats(sort='time')

【问题讨论】:

【参考方案1】:

您可以过滤输出,如this question所示。

因此,例如,您可以按模块名称、c.f.、print_stats() 进行过滤:

pr.sort_stats("time").print_stats("dir_or_module_name")  # replace dir_or_module_name

请确保之前调用strip_dirs(),因为这可能会删除您的目录/模块名称。


编辑:您甚至可以按多个名称进行过滤,因为print_stats() 应该接受正则表达式:

pr.print_stats("dir1|dir2|module1")

【讨论】:

以上是关于python cprofile 显示了很多信息。可以仅限于我的代码吗的主要内容,如果未能解决你的问题,请参考以下文章

Python通过装饰器并使用cprofile对函数进行性能分析

了解 python cProfile 输出

cProfile - 将数据保存在 Python 对象中/延迟写入磁盘

Python脚本性能剖析

python性能分析--cProfile

如何使用snakeviz 和 cProfile 查看是啥降低了 Python 脚本的速度