【问题标题】:Why does %timeit loop different number of times?为什么 %timeit 循环的次数不同?
【发布时间】:2018-01-04 14:35:05
【问题描述】:

在 Jupter Notebook 上,我试图比较两种方法在查找具有最大值的索引时所用的时间。

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

【问题讨论】:

    标签: python pandas ipython jupyter-notebook jupyter


    【解决方案1】:

    使用-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)
    

    【讨论】:

    • 您可以在-r 和运行次数之间放置一个空格,以便与-n 保持一致
    【解决方案2】:

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

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

    %timeit -n 5000
    df = pd.DataFrame({'High':[1,4,8,4,0]})
    
    5000 loops, best of 3: 592 µs per loop
    

    【讨论】:

    • 感谢您的解释.. 我只是想在这里为其他人提及.. ipython 文档中有错字.. 尚未更正。 ipython 的最新版本默认为 7 循环。如果未提及 -r
    • 我只想运行一次 timeit,但 %%timeit -n 1 对我不起作用,但 %%time 对我起作用。
    • -r和-n有什么区别?
    • @haneulkim 正如文档指出的那样:n - 执行“语句”多少次,r - 重复计时器多少次(默认为 5)。
    【解决方案3】:

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

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

    【讨论】:

    • 这似乎不是真的..如果你使用-n1,它实际上并没有执行一次..而是7次..有什么原因吗?
    • @alpha_989 你需要%%timeit -n 1 -r 1,循环和重复单独配置,重复默认为7。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-22
    • 1970-01-01
    • 1970-01-01
    • 2023-02-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多