Jupyter Notebook中time与timeit魔法命令差异及计时异常咨询
Jupyter Notebook中%time、%%time、%timeit、%%timeit的区别及计时异常解惑
一、四个魔法命令的核心区别
1. %time(行魔法)
- 仅针对单行代码计时,统计单次执行的总耗时(包含CPU时间与实际运行时间)
- 必须和目标代码写在同一行,比如
%time time.sleep(2)
2. %%time(单元格魔法)
- 对整个单元格内的所有代码计时,统计单次执行的总耗时
- 必须放在单元格的第一行,后续所有代码都会被纳入计时范围
3. %timeit(行魔法)
- 对单行代码进行多次重复执行,最终输出平均耗时(会自动调整执行次数,确保统计结果准确)
- 会规避首次执行的缓存影响,结果更能反映代码的真实平均性能
- 用法示例:
%timeit [单行代码]
4. %%timeit(单元格魔法)
- 对整个单元格的所有代码进行多次重复执行,输出平均耗时
- 同样自动调整执行次数,消除缓存干扰
- 必须放在单元格第一行,后续代码全部参与多次执行计时
二、你的计时异常原因及修正
你给出的代码:
%time a="stack overflow" time.sleep(2) print(a)
问题出在**%time是行魔法,只对它所在的那一行空行计时**,后面的变量赋值、休眠、打印代码完全没被纳入计时范围。空行执行本身耗时极短,自然会显示数微秒的结果。
正确写法
场景1:给整个代码块计时
用单元格魔法%%time,放在单元格第一行:
%%time import time # 注意要导入time模块 a="stack overflow" time.sleep(2) print(a)
场景2:只给休眠行计时
把%time和目标代码写在同一行:
import time a="stack overflow" %time time.sleep(2) print(a)
内容的提问来源于stack exchange,提问作者Dhamodharan R
相关产品推荐
相关产品推荐

