在Spyder(IPython3核心)中,似乎可以通过在代码单元格顶部运行%%time
或%%timeit
命令来轻松计时代码单元格:
#%%
%%time # or %%timeit which measures average runtime from multiple runs
....
#%% (the previous cell ends and the next begins)
运行上述代码可以获取由#%%
对定义的单元格的运行时间。这是Spyder中的工作方式,但在Jupyter Notebook环境中并不完全适用。在Jupyter中,代码单元格不是由
#%%
分隔符定义的,而是通过单击菜单栏中的按钮创建的。就我所尝试的而言,%%time
和%%timeit
命令都会引发编译错误。它似乎无法识别它们,但这很奇怪,因为我的Jupyter实际上使用与Spyder相同的IPython内核。在Jupyter中有效的一件事是%time
和%timeit
命令,但它们只能测量一行代码的运行时间,即必须如下格式:%time blah blah
结果发现我甚至无法测量由多行组成的 for
循环。所以这种方法对我来说不理想。在Jupyter中有没有仅使用魔术命令 %time(it)
等方式评估单元格运行时间的方法?
(PS:如果像在Spyder中一样,在单元格顶部附加一个 %time
命令,它将显示 Wall time: 0 ns
因为该命令在同一行中没有后续内容,实际上它没有执行任何计时)
%%time
和%%timeit
是有效的 IPython 单元格魔术命令,它们应该作为笔记本单元格的第一行。你正在使用哪个版本的 Jupyter 和 IPython? - cco%%time
时所得到的单元格和错误信息 - 如果%time
有效,那么%%time
也应该有效。 - cco