为什么 timeit.timeit 中执行时间的计算比 time.time 慢?
Why calculation of execution time is slower in timeit.timeit than 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 代码的执行时间。与时间模块相比,此模块为您提供了更精确的测量,因为它忽略了系统上的后台进程 运行,这可能会对您的代码执行产生影响。
与 time 相比,使用 timeit 模块的另一个优势是,默认情况下,它会执行 100 万次执行,然后再为您提供估算值.这允许您对 python 代码进行统计相关的测量。
timeit 尝试多次执行代码片段,并在输出中给出一个平均结果。
我刚刚查看了 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 代码的执行时间。与时间模块相比,此模块为您提供了更精确的测量,因为它忽略了系统上的后台进程 运行,这可能会对您的代码执行产生影响。
与 time 相比,使用 timeit 模块的另一个优势是,默认情况下,它会执行 100 万次执行,然后再为您提供估算值.这允许您对 python 代码进行统计相关的测量。
timeit 尝试多次执行代码片段,并在输出中给出一个平均结果。