Jupyter or iPython 中统计代码运行时间的几种方
2021-05-10 本文已影响0人
肆不肆傻
- 统计整个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
- 统计当前所在行代码运行时间
%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次。