timeit模块接口

2020年6月4日 / 15次阅读 / Last Modified 2020年6月4日
时间计算

timeit模块属于python标准库中的模块,用来测量一小段代码的执行时间。之前我总结了在命令行使用timeit,本文总结一下在交互式python解释器中使用timeit的技巧。

timeit.timeit函数

>>> import timeit
>>> timeit.timeit('"-".join(str(n) for n in range(100))', number=10000)
0.3018611848820001
>>> timeit.timeit('"-".join([str(n) for n in range(100)])', number=10000)
0.2727368790656328
>>> timeit.timeit('"-".join(map(str, range(100)))', number=10000)
0.23702679807320237
>>> timeit.timeit(lambda: "-".join(map(str, range(100))), number=10000)
0.19665591977536678

number默认值是1000000,为了防止测量执行时间过长,可以自己定义一个小点的值。

timeit.timeit返回的是整体执行时间,即执行number次数经过的时间,我们可以自己做个除法来得到执行一次大概的时间:

>>> timeit.timeit(lambda: "-".join(map(str, range(100))), number=10000)/10000
1.2938609999991968e-05
>>> timeit.timeit(lambda: "-".join(map(str, range(100))))/1000000
1.2920393699999978e-05

timeit.repeat函数

与timeit.timeit不同的是,repeat函数可以repeat,即repeat多少个number次数。

>>> timeit.repeat(lambda: "-".join(map(str, range(100))), number=10000)
[0.1319488999999976, 0.13077599999996892, 0.12894170000004124, 0.12874669999996513, 0.12878299999988485]
>>> timeit.repeat(lambda: "-".join(map(str, range(100))), number=10000, repeat=3)
[0.13079179999999724, 0.12995119999982307, 0.12856940000006034]

每一次repeat的时间,汇总成一个list返回,repeat默认值是5。

测量一个函数的执行时间

>>> def test_timeit():
...  a = 10
...  b = 100
...  return a**b
...
>>> timeit.timeit(test_timeit)
0.542102899999918
>>> timeit.repeat(test_timeit)
[0.5396686999999929, 0.5385989999999765, 0.5395476000001054, 0.5421974999999293, 0.5393000000001393]

timeit模块在交互式python解释器中执行,与命令不同的是输出!命令行的输出更加人性化,而这里的输出属于raw output,要根据自己的需要转化。

-- EOF --

本文链接:https://www.pynote.net/archives/2039

留言区

《timeit模块接口》有1条留言

电子邮件地址不会被公开。 必填项已用*标注

  • 麦新杰

    timeit模块函数接口,默认使用time.perf_counter,即wall clock。 [回复]


前一篇:
后一篇:

More


©Copyright 麦新杰 Since 2019 Python笔记

go to top