我想得到的时间花在单元格执行除了原始的输出从单元格。

为此,我尝试了%%timeit -r1 -n1,但它没有公开在cell中定义的变量。

%%time适用于只包含1条语句的cell。

In[1]: %%time
       1
CPU times: user 4 µs, sys: 0 ns, total: 4 µs
Wall time: 5.96 µs
Out[1]: 1

In[2]: %%time
       # Notice there is no out result in this case.
       x = 1
       x
CPU times: user 3 µs, sys: 0 ns, total: 3 µs
Wall time: 5.96 µs

最好的方法是什么?

更新

我已经在nbeextension中使用执行时间相当长一段时间了。这是伟大的。

更新2021 - 03

到目前为止,这是正确的答案。从本质上讲,%%time和%%timeit现在都像预期的那样工作。


当前回答

使用细胞魔法和这个项目在github由菲利普云:

通过将它放在你笔记本的顶部来加载它,或者将它放在你的配置文件中,如果你总是默认加载它:

%install_ext https://raw.github.com/cpcloud/ipython-autotime/master/autotime.py
%load_ext autotime

如果加载,后续单元格执行的每个输出都将包括执行它所花费的时间(以分钟和秒为单位)。

其他回答

当遇到麻烦时,什么意味着什么:

时间还是??时间

详情如下:

Usage, in line mode:
  %timeit [-n<N> -r<R> [-t|-c] -q -p<P> -o] statement
or in cell mode:
  %%timeit [-n<N> -r<R> [-t|-c] -q -p<P> -o] setup_code
  code
  code...

Time execution of a Python statement or expression using the timeit
module.  This function can be used both as a line and cell magic:

- In line mode you can time a single-line statement (though multiple
  ones can be chained with using semicolons).

- 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.

%time和%timeit现在成为ipython内置魔法命令的一部分

使用细胞魔法和这个项目在github由菲利普云:

通过将它放在你笔记本的顶部来加载它,或者将它放在你的配置文件中,如果你总是默认加载它:

%install_ext https://raw.github.com/cpcloud/ipython-autotime/master/autotime.py
%load_ext autotime

如果加载,后续单元格执行的每个输出都将包括执行它所花费的时间(以分钟和秒为单位)。

我只是在单元格的开头添加了%%time,就得到了时间。您可以在Jupyter Spark集群/虚拟环境中使用相同的方法。只需在单元格顶部添加%%time,就会得到输出。在使用Jupyter的星火集群上,我添加到单元格的顶部,我得到如下输出

[1]  %%time
     import pandas as pd
     from pyspark.ml import Pipeline
     from pyspark.ml.classification import LogisticRegression
     import numpy as np
     .... code ....

Output :-

CPU times: user 59.8 s, sys: 4.97 s, total: 1min 4s
Wall time: 1min 18s

这只是旧版本的一个问题。

您现在需要做的就是在单元格的顶部放置%%time。

%%time表示运行某项操作所花费的时间。它更适合报告长时间运行的操作,而不是进行低级优化。

%%timeit是一个基准测试工具,它可以反复运行语句,以给出某些语句的平均运行时间以及标准偏差。由于语句重复执行的方式,在%%timeit单元格中创建的变量在其他单元格中不可用。

%%timeit使用python timeit模块。医生说,

它避免了 用于测量执行时间的常见陷阱的数量。另见蒂姆·彼得斯 Python Cookbook中“算法”章节的介绍,由 O ' reilly。

我希望该模块仍然是相关的,因为它所引用的参考描述了诸如(1)Windows 98只更新time.time() 18.2次每秒的解决方案,以及(2)将所有语句阻塞到一行上,以避免增加行号计数器的字节码开销。


目前排名最高的答案,以及其他一些过时的答案——应该删除,因为它们现在非常具有误导性——确实有有用的评论,表明这些答案是不正确的:

即使没有打印最后一个语句,%%time也可以工作 现在将测试单元格中的变量考虑到下一个单元格中