%time、%timeit、%%time、%%timeit的区别(ipython中查看代码执行时间的魔法命令)

Kamiisa ·
更新时间:2024-11-13
· 906 次阅读

1、%time、%timeit、%%time、%%timeit的比较

%time:行模式下,代码运行一次所花费的时间。
%%time:单元模式下,代码运行一次所花费的时间。

%timeit:行模式下,执行代码块若干次取最佳结果
%%timeit:单元模式下,执行代码块若干次取最佳结果

1)注解:

1> 行模式: 只对紧跟其后的代码进行测试。即无法使用换行符来添加代码块进行测试。 2> 单元模式: 用于代码块的测试。它不仅对紧跟其后的代码发挥作用,通过换行符添加的其余代码,会被视为一个整体进行测试。其中,第一行代码用作设置代码(已执行但未计时),并且单元的主体已计时。单元主体可以访问在设置代码中创建的任何变量

2)举例:

In[102]: %%timeit # 用于单元模式 ...: for num in range(1, 10000): ...: result = 0 ...: for factor in range(1, num): ...: if num % factor == 0: ...: result += factor ...: if result == num: ...: print(num) ...: 6 28 496 8128 6 28 496 8128 6 28 496 8128 6 28 496 8128 6 28 496 8128 6 28 496 8128 6 28 496 8128 6 28 496 8128 7.57 s ± 311 ms per loop (mean ± std. dev. of 7 runs, 1 loop each) In[102]: %timeit # 用于行模式。当在其后添加代码块时,将无法得到想要的测试结果 ...: for num in range(1, 10000): ...: result = 0 ...: for factor in range(1, num): ...: if num % factor == 0: ...: result += factor ...: if result == num: ...: print(num) ...: 6 28 496 8128 2、%timeit 和 %%timeit 的具体参数:

timeit [-n -r [-t|-c] -q -p

-o]
选项:
-n : 在循环中执行给定语句次。如果未提供,则确定一个可以获得足够的精度值。

-r : 重复次数,每个重复次数由个循环组成,并获得最佳结果。默认值:7

-t: 使用time.time来测量时间,这是Unix上的默认值。此功能测量实际时间,非CPU用户时间。

-c: 使用time.clock来测量时间,这是Windows上的默认设置,用于测量实际时间。在Unix上,使用resource.getrusage代替并返回CPU用户时间。

-p\

使用

位的精度显示计时结果。默认值:3

-q: 不打印结果。

-o: 返回一个TimeitResult,可以将其存储在变量中以进行检查。


作者:jieru_liu



time ipython

需要 登录 后方可回复, 如果你还没有账号请 注册新账号
相关文章