我正在使用神奇的 %%timeit 函数来获取执行某些代码所需的时间。困扰我的是,当我运行 %%timeit 时,我没有得到结果。例如:
a=5
b=3
%%timeit
c = a + b
现在,如果我想在下一个单元格中使用 c,我会发现 c 尚未定义。
print(c)
>>>NameError: name 'c' is not defined
你能帮我理解为什么会发生这种情况吗,为什么在那个特定的单元格中使用神奇的 %%timeit 函数时不存储 c ?
我正在使用神奇的 %%timeit 函数来获取执行某些代码所需的时间。困扰我的是,当我运行 %%timeit 时,我没有得到结果。例如:
a=5
b=3
%%timeit
c = a + b
现在,如果我想在下一个单元格中使用 c,我会发现 c 尚未定义。
print(c)
>>>NameError: name 'c' is not defined
你能帮我理解为什么会发生这种情况吗,为什么在那个特定的单元格中使用神奇的 %%timeit 函数时不存储 c ?
当您使用 计时代码时%%timeit
,您提供的代码将在单独的命名空间中执行,因此其效果对您的环境不可见。
细胞模式:
%%timeit [-n<N> -r<R> [-t|-c] -q -p<P> -o] setup_code code code...
在单元模式下,第一行中的语句用作设置代码(执行但不计时),单元的主体是计时的。单元格主体可以访问在设置代码中创建的任何变量。
https://ipython.org/ipython-doc/3/interactive/magics.html#magic-timeit
您正在单元模式下执行,并且该行只是设置代码;这意味着它实际上并没有计时,它的结果只能由它后面的单元代码访问。