【发布时间】:2017-09-04 13:57:18
【问题描述】:
似乎在 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 似乎无法识别它们,但这很奇怪,因为我的 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 Jupyter 4.3.1 和 IPython 4.2.1,应该是最新的。
-
请显示单元格和您尝试使用
%%time时遇到的错误 - 如果%time有效,那么%%time也应该有效。 -
@cco 我知道哪里出了问题。我认为 cmets 不算数,所以我将命令附加到标题命令下方。
标签: python time ipython jupyter-notebook spyder