为什么timeit.timeit中的执行时间计算比time.time慢?

问题描述

我刚刚检查了 Python 官方文档中的 timeit,我写了下面的程序并观察到了这一点。使用 timeit.timeit 执行大约需要 12 秒,而时间差的输出(使用 time.time)显示我为 0 秒。为什么会有如此大的差异。

# CASE 1
# import timeit
# mysetup = """from math import sqrt """
# mycode = """
# lst = []
# for i in range(100):
#     lst.append(sqrt(i))"""
# print(timeit.timeit(setup=mysetup,stmt=mycode))

# CASE 2    
import time
from math import sqrt
t1 = time.time()
lst = []
for i in range(100):
    lst.append(sqrt(i))
t2 = time.time()
print(lst)
print(t2-t1)

解决方法

python 中的 timeit 模块可帮助您测量 Python 代码的执行时间。与时间模块相比,此模块为您提供了更精确的测量,因为它忽略了在您的系统上运行的后台进程,这些进程可能会对您的代码执行产生影响。

使用 timeit 模块与 time 相比的另一个优势是,默认情况下,它会先执行 100 万次执行,然后再为您提供估计值。这使您可以对 Python 代码进行统计相关的测量。

timeit 尝试大量执行代码片段,并在输出中给出平均结果。