Python %timeit测试针对类似命令的可变循环数运行
假设有这样一个数据Python %timeit测试针对类似命令的可变循环数运行,python,Python,假设有这样一个数据 In [51]: data = list(range(10**6)) In [53]: data[-1] Out[53]: 9999
In [51]: data = list(range(10**6))
In [53]: data[-1]
Out[53]: 999999
实证检验
In [54]: %timeit 999999 in data
13.8 ms ± 256 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
In [55]: %timeit 5 in data
170 ns ± 55.6 ns per loop (mean ± std. dev. of 7 runs, 10000000 loops each)
对于9999999的100个循环,我非常困惑,但是对于5个循环,10000000个循环
这两种情况下的循环是否应该相同?
timeit
尝试为您估计循环的数量。如文件中所述:
如果未给出-n,则通过尝试计算适当数量的循环
连续10次幂,直到总时间至少为0.2秒
如果要手动定义循环数,请使用number
:
import timeit
timeit.timeit('999999 in range(10**6)', number=10000)
或者从命令行界面,在
python-m timeit[-N][statement…]中定义N
使用%timeit
和ipython
,模块将根据脚本所用的时间限制重复次数,以便不必在不合理的时间内循环。由于数据中的5
比数据中的9999999花费的时间要少得多,因此对于第一种情况,它能够循环多次
您可以使用-n
标志明确设置重复次数:
%timeit -n 5 999999 in data
16.3 ms ± 259 µs per loop (mean ± std. dev. of 7 runs, 5 loops each)
查看以下内容:
选项:-n:在循环中执行给定的语句次数。如果未提供,则确定,以获得足够的精度
因为根据时间安排,如果第一次测试运行10000000次,则需要38小时。