You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 21:53:21