嗨,Python 专家们,我开始使用 cProfile 以便在我的程序中获得更详细的计时信息。然而,让我感到非常不安的是,有一个显着的开销。知道为什么 cProfile 报告了 7 秒而 time 模块在下面的代码中只报告了 2 秒吗?

# a simple function

def f(a, b):
 c = a+b

# a simple loop
def loop():
 for i in xrange(10000000):
  f(1,2)

# timing using time module
# 2 seconds on my computer
from time import time
x = time()
loop()
y = time()
print 'Time taken %.3f s.' % (y-x)

# timing using cProfile
# 7 seconds on my computer
import cProfile
cProfile.runctx('loop()', globals(), locals())

最佳答案

因为它做了更多的工作? time 只是整个操作的时间,而 cProfile 在检测下运行它,因此它可以获得详细的分割。显然,分析并不意味着在生产中使用,因此 2.5 倍的开销似乎是一个很小的代价。

关于python - Python cProfile 中的严重开销?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3134843/

10-13 07:37