Python cProfile:如何从分析数据中过滤掉特定的调用?

Posted

技术标签:

【中文标题】Python cProfile:如何从分析数据中过滤掉特定的调用?【英文标题】:Python cProfile: how to filter out specific calls from the profiling data? 【发布时间】:2011-04-15 06:28:50 【问题描述】:

我已经开始分析一个包含许多 sleep(n) 语句的脚本。总而言之,我有超过 99% 的运行时间都花在了睡眠上。尽管如此,它在实际工作期间偶尔会遇到性能问题,但相关的、有趣的分析数据变得非常难以识别,例如使用 kcachegrind。

有没有办法可以将某些调用/函数列入黑名单,以免被分析? 或者,如何通过分析数据文件的后处理过滤掉此类调用?

我正在使用 profilestats 装饰器 (http://pypi.python.org/pypi/profilestats)。

谢谢

【问题讨论】:

【参考方案1】:

您需要的不仅仅是在 sleep() 期间排除样本。您需要剩余的样本来告诉您一些有用的信息。那将是堆栈采样,在挂钟时间,在代码行级别总结百分比。 Zoom 是这种采样的好工具,我希望忽略包含特定功能的样本不会太难。

【讨论】:

以上是关于Python cProfile:如何从分析数据中过滤掉特定的调用?的主要内容,如果未能解决你的问题,请参考以下文章

python模块上的cprofile

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

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

调优工具python性能分析工具cProfiler

如何使用 pypy 进行分析(cProfile 不起作用)

python性能分析--cProfile