Moh*_*hih 6 python time timeit
我想比较两个片段的执行时间,看看哪一个更快。因此,我想要一种准确的方法来测量 python 代码片段的执行时间。
我已经尝试过使用time.time()、time.process_time()、time.perf_counter_ns()以及timeit.timeit(),但我面临着与所有这些相同的问题。也就是说:当我使用上述任何方法来测量同一代码片段的执行时间时,每次运行它时它都会返回不同的值。这种变化有些显着,以至于我无法可靠地使用它们来比较两个片段的执行时间差异。
例如,我在我的 google colab 中运行以下代码:
import time
t1 = time.perf_counter()
sample_list = []
for i in range(1000000):
sample_list.append(i)
t2 = time.perf_counter()
print(t2 - t1)
Run Code Online (Sandbox Code Playgroud)
我运行上面的代码 10 次,结果的变化约为 50%(最小值 = 0.14,最大值 = 0.28)。
还有其他选择吗?
每次运行给定代码片段的执行时间几乎总是不同的。大多数可用于分析单个函数/代码片段的工具都会考虑到这一点,并多次运行代码以便能够提供平均执行时间。原因是您的计算机上还有其他进程正在运行,并且资源并不总是以相同的方式分配,因此不可能控制每个变量以便每次运行都获得相同的执行时间。
\n分析给定函数或简短代码片段的最简单方法之一是使用%timeitipython 中的“magic”命令。例子:
>>> %timeit 1 + 1\n8.41 ns \xc2\xb1 0.0181 ns per loop (mean \xc2\xb1 std. dev. of 7 runs, 100,000,000 loops each)\nRun Code Online (Sandbox Code Playgroud)\n%%timeit如果您使用而不是 ,它还允许您输入多行代码块来计时%timeit。
timeit库可以独立使用,但在交互式 ipython 会话中使用通常更容易。
\n其他资源:
\n\n