正确使用 cProfile 的方法

Posted

技术标签:

【中文标题】正确使用 cProfile 的方法【英文标题】:Correct Way To Use cProfile 【发布时间】:2016-10-20 01:46:42 【问题描述】:

我想对我编写的一些函数进行概要分析。我正在查看 cProfile 的文档,但我不明白以下两段代码之间的区别(如果有的话)是:

import cProfile

profile = cProfile.Profile()
result = profile.runcall(func, *args, **kwargs)
profile.dump_stats('profile.stats')

import cProfile

profile = cProfile.Profile()
profile.enable()
result = func(*args, **kwargs)
profile.disable()
profile.dump_stats('profile.stats')

这两个块是等价的,还是做些微妙的不同的事情?

【问题讨论】:

【参考方案1】:

它们几乎相同:https://github.com/python/cpython/blob/581eb3e0dc0bc0d306363c8d404ffd9988b0cc87/Lib/cProfile.py#L106

runcall 将在出现异常时停止分析,否则功能相同。

【讨论】:

那么简单而全面。

以上是关于正确使用 cProfile 的方法的主要内容,如果未能解决你的问题,请参考以下文章

将 cProfile 与 asyncio 代码一起使用的正确方法是啥?

Spyder 分析器使用 cProfile 还是 Profile?

使用 cProfile 在 Python 中分析类的方法?

python性能分析--cProfile

如何计算几个 cProfile 结果的平均结果?

python性能分析之cProfile模块