📜  如何在 python 3 中使用 timeit - Python (1)

📅  最后修改于: 2023-12-03 15:38:23.245000             🧑  作者: Mango

如何在 Python 3 中使用 timeit

timeit 是 Python 的一个内置模块,用来测试代码的执行时间。在评估性能方面, timeit 是一种很方便的工具,因为它可用于测量各种代码段、函数或语句的运行时间。

基本用法

Python 中 timeit 的基本用法是在代码文件或交互式 Python 环境中导入模块,然后使用 timeit() 函数来测量代码片段的执行时间。它的基本语法如下:

import timeit

def my_function():
    # code to be timed

print(timeit.timeit(my_function, number=10000))

使用 timeit() 函数需要提供要测试的代码片段,通常可以将其定义为一个函数。

将要测量的函数传递给 timeit()number 参数表示测试代码的执行次数。在上面的示例中, my_function() 函数将被调用 10000 次,而函数调用的总时间将被返回。

timeit 还提供其他方便的函数,例如 repeat() 函数可以多次运行一个测试来评估其稳定性,甚至可以测量代码片段的内存使用情况。

精度

在使用 timeit 时需要注意其所测试的代码本身不会对计时器的精度造成太大影响。例如,如果要测试的代码块包含 I/O 操作或者计算密集型任务,那么相对来说,它们所花费的时间将比计时器的误差要大得多。

为了获得更精确的测量结果,可以多次测试同一代码块,并计算平均值。在这些情况下,延迟较小的操作(例如使用 print() 函数打印时间戳)会影响计时器的精度,因此必须避免这些操作。

示例

下面是一个示例函数,将比较列表推导式和 for 循环的执行时间:

import timeit

def list_comprehension():
    return [i**2 for i in range(1000)]

def for_loop():
    squares = []
    for i in range(1000):
        squares.append(i**2)
    return squares

print(timeit.timeit(list_comprehension, number=10000))
print(timeit.timeit(for_loop, number=10000))

在这个例子中,我们定义两个计算平方数的函数:一个使用列表推导式,另一个使用 for 循环。我们在两个函数之间使用 timeit 进行比较测试。

运行上述脚本将输出结果。结果显示,列表推导式的执行速度更快。

结论

在 Python 中使用 timeit 来度量代码的执行时间是非常有用的。虽然我们可以手动完成它,但使用 timeit 更加轻松方便,因为它在同一时间内测试了多次并报告平均值、最大值和最小值。这个功能极大地简化了性能评估的过程。