2020年6月4日 / 40次阅读 / Last Modified 2020年6月4日
时间计算
timeit模块属于python标准库中的模块,用来测量一小段代码的执行时间。之前我总结了在命令行使用timeit,本文总结一下在交互式python解释器中使用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.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条留言
前一篇:Win系统下Python的安装位置
后一篇:time模块中的计时器
Ctrl+D 收藏本页
©Copyright 麦新杰 Since 2019 Python笔记
timeit模块函数接口,默认使用time.perf_counter,即python进程运行时间,可以考虑替换成process time。 [ ]