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

2021-05-10  本文已影响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次。

上一篇下一篇

猜你喜欢

热点阅读