美文网首页
Jupyter or iPython 中统计代码运行时间的几种方

Jupyter or iPython 中统计代码运行时间的几种方

作者: 肆不肆傻 | 来源:发表于2021-05-10 12:02 被阅读0次
    1. 统计整个cell中所有代码的运行时间 %%time
    # cell begin
    %%time
    import time
    for _ in range(100):
        time.sleep(0.03) # sleep 0.03s
    # cell end
    
    CPU times: user 7.06 ms, sys: 223 µs, total: 7.29 ms
    Wall time: 3.01 s
    
    1. 统计当前所在行代码运行时间 %time%timeit
    # cell begin
    %%time
    import time
    %time for _ in range(100): time.sleep(0.03)
    for _ in range(100): time.sleep(0.02)
    # cell end
    
    # The specific line
    CPU times: user 2.79 ms, sys: 3.31 ms, total: 6.1 ms
    Wall time: 3.01 s
    
    # The whole cell
    CPU times: user 8.08 ms, sys: 5.51 ms, total: 13.6 ms
    Wall time: 5.03 s
    

    上面是使用%time 统计当前行代码的运行时间,只运行一次。

    # cell begin
    %%time
    import time
    %timeit time.sleep(0.03)
    for _ in range(100): time.sleep(0.02)
    #cell end
    
    # The specific line
    30.1 ms ± 3.91 µs per loop (mean ± std. dev. of 7 runs, 10 loops each) # total 7x10=70 loops, ~2.1s
    
    # The whole cell
    CPU times: user 8.4 ms, sys: 4.42 ms, total: 12.8 ms
    Wall time: 4.45 s
    

    上面是使用%timeit统计当前行代码的运行时间,可以看到代码运行了70次。

    注意:%timeit 使用Python的timeit模块来统计代码运行时间,被统计代码将被执行多次,最终输出每执行一次的平均时间。

    %timeit例子中,待统计代码的运行次数(如:7)和每次的循环次数(如:10)是由系统根据代码情况动态确定的。我们也可以通过手动设定-r-n 参数来手动指定代码的运行次数和每次循环次数。例如:

    # cell begin
    %%time
    import time
    %timeit -r 5 -n 7 time.sleep(0.03)
    for _ in range(100): time.sleep(0.02)
    #cell end
    
    # The specific line
    19.6 ms ± 741 µs per loop (mean ± std. dev. of 5 runs, 7 loops each) # total 5x7=35 loops, ~1s
    
    # The whole cell
    CPU times: user 6.99 ms, sys: 4.77 ms, total: 11.8 ms
    Wall time: 3.4 s 
    

    在上例中,指定行的代码共运行了5次,每次循环了7次,共循环35次。

    相关文章

      网友评论

          本文标题:Jupyter or iPython 中统计代码运行时间的几种方

          本文链接:https://www.haomeiwen.com/subject/zztidltx.html