vlambda博客
学习文章列表

一日一技:Python中的timeit()方法



timeit()方法



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 timeitprint(timeit.timeit('output = 10*5'))


输出:

0.06127880399999999


我们已经看到了一个简单的示例,该示例为我们提供了简单代码语句output = 10*5的执行时间,执行该命令所花费的时间为0.06127880399999999。




在python代码中计时多行




我们可以使用分号或通过将包含在代码中的代码保存为带三引号的字符串来在timeit.timeit()中执行两行代码。


以下示例说明了其工作原理。




示例1:使用分号

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



输出:

The time taken is 0.137031482




示例2:使用三引号

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


输出:

The time taken is 0.182619178



timeit-方法



这是2种重要的timeit方法


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


  • timeit.repeat(stmt,setup,timer,repeat,number):与timeit()相同,但是随着重复,timeit()被称为重复次数。




范例1:

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



输出:

0.46715912400000004





范例2:


timeit.default_timer()方法


# testing timeit()
import timeitimport 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.220261875The time difference is : 0.0004737320000000045





范例3:


timeit.repeat()方法


# testing timeit()import timeitimport_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()参数,并以数组格式返回执行时间,并按重复编号指定值。



在命令行界面中执行计时功能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 statement:代码详细信息。






范例如下:

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



  • 它运行代码语句100万次,这是默认值,并从中返回最短的时间。还可以通过在time()函数中设置参数数来增加/减少一百万。


  • 在执行测试时,每次按time()函数都会禁用垃圾收集。


  • 根据使用的操作系统,timeit()在内部获取准确的时间。例如,对于Windows操作系统,它将使用time.clock();对于Mac和Linux,它将使用time.time()。




摘要



timeit()方法用于获取给定代码的执行时间



与timeit()一起使用的参数



  • stmt:这将使用您要测量执行时间的代码

  • setup:这将包含需要在stmt之前执行的设置详细信息

  • timer:它将具有计时器值,timeit()已经设置了默认值,我们可以忽略它。

  • number:stmt将按照此处给出的编号执行。






你学习到了吗?

欢迎在下方留言,

谢谢关注!