Python Timeit() 示例

⚡ 智能摘要

Python Timeit() 函数通过多次运行一段小代码片段并返回最短运行时间来测量其执行时间。它支持 timeit、repeat 和 default_timer 方法,并且可以从脚本或命令行运行。

  • ⏱️ Timeit 的定义: 测量代码片段的执行时间,返回多次运行中的最小值。
  • 🧩 参数: stmt、setup、timer 和 number 控制运行的内容和运行频率。
  • 🔁 方法: timeit()、repeat() 和 default_timer() 提供不同的计时选项。
  • 💻 命令行: 运行 python -m timeit 命令,并添加 -n、-r 和 -s 等标志。
  • 为什么要使用它: 禁用垃圾回收机制,并为每个操作系统选择最精确的计时器。

Python Timeit()

什么是 Python Timeit()?

Python 时间() 是其中的一种方法 Python 库来测量给定代码片段的执行时间。 Python 库运行代码语句 1 万次,并提供从给定的代码片段集中获取的最短时间。 Python timeit() 是一种有用的方法,有助于检查代码的性能。

句法

timeit.timeit(stmt, setup,timer, number)

参数

  • STMT:这将获取您想要测量执行时间的代码。默认值为“pass”。
  • 格局:这将包含需要在 stmt 之前执行的设置详细信息。默认值为“pass”。
  • 计时器:这将具有计时器值,timeit() 已经设置了默认值,我们可以忽略它。
  • :stmt 将按照此处给出的数字执行。默认值为 1000000。

要使用 timeit(),我们需要导入模块,如下所示:

import timeit

第一个例子

以下是 timeit() 函数的一个简单示例

Code 例子1

# testing timeit()
import timeit
print(timeit.timeit('output = 10*5'))

输出:

0.06127880399999999

我们已经看到了一个简单的例子,它给出了简单代码语句输出=10*5的执行时间,执行它所花费的时间为0.06127880399999999。

对 Python 代码中的多行进行计时

在 timeit.timeit() 中,有两种方法可以执行多行代码:用分号分隔行或用三重引号将代码作为字符串括起来。

以下有一些示例来展示其工作原理。

示例 1:使用分号

import timeit
print("The time taken is ",timeit.timeit(stmt='a=10;b=10;sum=a+b'))

输出:

The time taken is  0.137031482

示例 2:使用三重引号

import timeit
import_module = "import random"
testcode = '''
def test():
    return random.randint(10, 100)
'''
print(timeit.repeat(stmt=testcode, setup=import_module))

输出:

C:\pythontest>python testtimeit.py
The time taken is  0.182619178

timeit – 方法

以下是两个重要的 timeit 方法

timeit.default_timer() :执行时将返回默认时间。

timeit.repeat(stmt,设置,计时器,重复,数字) :与 timeit() 相同,但是使用 repeat 时,timeit() 被调用的次数是给定的。

程序示例 1

# testing timeit()
import timeit
import_module = "import random"
testcode = '''
def test():
    return random.randint(10, 100)
'''
print(timeit.timeit(stmt=testcode, setup=import_module))

输出:

0.46715912400000004

例子2

default_timer() 示例

# testing timeit()

import timeit
import random

def test():
    return random.randint(10, 100)

starttime = timeit.default_timer()
print("The start time is :",starttime)
test()
print("The time difference is :", timeit.default_timer() - starttime)

输出:

The start time is : 0.220261875
The time difference is : 0.0004737320000000045

示例 3:timeit.repeat()

# testing timeit()
import timeit
import_module = "import random"
testcode = '''
def test():
    return random.randint(10, 100)
'''
print(timeit.repeat(stmt=testcode, setup=import_module, repeat=5))

输出:

 [0.43638873, 0.5040939680000001, 0.5069179909999999, 0.3943449330000002, 0.3546886979999999]

timeit.repeat() 的工作原理与 timeit.timeit() 函数类似,唯一的区别在于它接受重复参数并以数组格式返回执行时间,其值与重复次数一致。

在命令行界面中执行计时函数 timeit.timeit()

在命令行上 timeit() 内执行函数的语法如下:

python -m timeit [-n N] [-r N] [-s S] [-t] [-c] [-h] [code statement ...]

命令行参数:

  • -n N:您希望代码执行的次数。
  • -r N:希望 timeit() 函数重复的次数
  • -s S:这将包含在代码执行之前执行的设置详细信息。
  • -t:为此,您可以使用 time.time()
  • -c:为此,您可以使用 time.clock()
  • -h:获取帮助
  • code 语句:代码细节。

例如:

C:\pythontest>python -m timeit -s 'text="hello world"'
20000000 loops, best of 5: 13.1 nsec per loop

您可以在命令行内执行的另一种方法如下所示:

例如:

>>> import timeit
>>> print("The time taken is ",timeit.timeit(stmt='a=10;b=10;sum=a+b'))
The time taken is  0.15048536300000137
>>>

为什么 timeit() 是测量执行时间的最佳方法 Python 代码?

以下是我们认为 timeit() 是测量执行时间的最佳方法的几个原因。

  • 它运行代码语句 1 万次(默认值),然后返回所用的最短时间。您还可以通过设置 time() 函数中的参数数量来增加/减少 1 万次。
  • 在执行测试时,每次都会通过time()函数禁用垃圾收集。
  • timeit() 内部会根据您所使用的操作系统获取准确的时间。例如,它将使用 time.clock() 来 Windows 操作系统和适用于 Mac 和 Linux 的 time.time()。

常见问题

`timeit.timeit()` 会执行指定次数的语句,并返回一个总耗时。`timeit.repeat()` 会多次执行相同的测量过程,并返回一个结果列表,供您选择最佳结果。

timeit 在测量期间禁用垃圾回收,因此后台清理不会干扰计时。这使得结果更加一致且更具可比性,从而完全专注于被测代码片段的执行时间。

在 stmt 字符串中,您可以使用分号分隔语句,或者使用三引号传递多行字符串。对于函数,请在 setup 文件中定义它们,并在 stmt 文件中调用它们。

人工智能可以分析代码,识别缓慢的循环或开销较大的调用,建议向量化或内置的替代方案,并推荐更好的数据结构,从而帮助……ping 开发人员将优化重点放在 Timeit 显示瓶颈最大的地方。

是的。给定一段代码及其 timeit 结果,AI 可以提出重写方案,例如列表推导式、生成器表达式或库函数,然后您重新运行 timeit 以确认改进是否真实存在。

总结一下这篇文章: