为什么 %timeit 循环次数不同?

问题描述 投票:0回答:3

在 Jupter Notebook 上,我尝试比较两种方法查找最大值索引所花费的时间。

enter image description here

在图像中,第一个函数进行了 1000 个循环,第二个函数进行了 10000 个循环,这是由于方法本身导致的循环增加还是 Jupyter 只是添加了更多循环以获得每个循环更准确的时间,即使第二个函数可能需要才1000,是这样吗?

python pandas ipython jupyter-notebook jupyter
3个回答
42
投票

%timeit
库将根据脚本执行所需的时间来限制运行次数。

运行次数可以用-n 来设置。示例:

%timeit -n 5000
df = pd.DataFrame({'High':[1,4,8,4,0]})

5000 loops, best of 3: 592 µs per loop

11
投票

使用

-r
来限制运行次数:

import time
%timeit -r1 time.sleep(2)
# 2 s ± 0 ns per loop (mean ± std. dev. of 1 run, 1 loop each)

%timeit -r4 time.sleep(2)
# 2 s ± 800 µs per loop (mean ± std. dev. of 4 runs, 1 loop each)

%timeit time.sleep(2)
# 2 s ± 46.5 µs per loop (mean ± std. dev. of 7 runs, 1 loop each)

1
投票

它有一个内置选项-n: " 选项: -n: 在循环中执行给定的语句次数。如果未给出该值,则选择一个合适的值。"docs

因此,如果未指定,它会选择循环数本身。

最新报价(v8.26.0): “选项: -n:循环执行给定的语句次数。如果未提供,则确定以获得足够的准确性。

-r:重复次数,每次由循环组成,取平均结果。默认值:7 ”

文档截图

© www.soinside.com 2019 - 2024. All rights reserved.