魔法函数timeit

Magic function timeit

我正在使用神奇的 %%timeit 函数来获取执行某些代码所需的时间。困扰我的是,当我 运行 %%timeit 时,我没有得到结果。例如:

a=5
b=3

%%timeit
c = a + b

现在,如果我想在下一个单元格中使用 c,我会发现 c 尚未定义。

print(c)
>>>NameError: name 'c' is not defined

你能帮我理解为什么会这样吗?为什么在那个特定的单元格中使用神奇的 %%timeit 函数时 c 没有被存储?

当您使用 %%timeit 编写代码时,您提供的代码在单独的命名空间中执行,因此其效果对您的环境不可见。

cell mode:

%%timeit [-n<N> -r<R> [-t|-c] -q -p<P> -o] setup_code code code...

In cell mode, the statement in the first line is used as setup code (executed but not timed) and the body of the cell is timed. The cell body has access to any variables created in the setup code.

https://ipython.org/ipython-doc/3/interactive/magics.html#magic-timeit

您正在单元格模式下执行,该行只是设置代码;这意味着它实际上并没有计时,它的结果只能由它后面的单元格代码访问。