Python Timeit() 及其示例

Python timeit() 是什么?

Python timeit() 是 Python 库中用于测量给定代码片段执行时间的方法。Python 库运行该代码语句一百万次,并提供给定代码片段集中所需的最短时间。Python timeit() 是一个非常有用的方法,有助于检查代码的性能。

语法

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

参数

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

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

import timeit

第一个例子

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

代码示例 1

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

输出

0.06127880399999999

我们看到了一个简单的示例,它给出了简单代码语句 output = 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, setup, timer, repeat, number):与 timeit() 相同,但 repeat 会调用 timeit() 的次数等于 repeat 的值。

程序示例 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() 函数类似,唯一的区别是它接受 repeat 参数,并以数组格式返回执行时间,值对应于 repeat 的次数。

在命令行界面中执行计时函数 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:帮助
  • 代码语句:代码详细信息。

示例

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() 是测量执行时间的最佳方法的几个原因。

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

摘要

Timeit() 用于获取给定小代码的执行时间

timeit() 使用的参数

  • stmt:这将采用您想要测量执行时间的代码
  • setup:这将包含在 stmt 之前需要执行的设置详细信息
  • timer:这将具有计时器值,timeit() 已经设置了默认值,我们可以忽略它。
  • number:stmt 将根据此处给出的数字执行。