繁体   English   中英

Jupyter笔记本%timeit比命令行慢1000倍,为什么?

[英]Jupyter notebook %timeit 1000 times slower than command line, why?

我正在尝试设置python 3.6的时间。 jupyter notebook上的程序,但似乎魔术命令%timeit增加了很多额外的开销,给了我错误的统计信息。

从Jupyter笔记本:

%timeit a=1
10000000 loops, best of 3: 84.1 ns per loop

从cmdline

python -m timeit 'a=1'
100000000 loops, best of 3: 0.0163 usec per loop

因此,在这种情况下,命令行timeit运行速度比jupyter笔记本timeit快几百万倍。 这是什么原因造成的,有什么办法可以修复它,因此jupyter笔记本中的timeit可以给出正确的测量值吗?

您没有正确读取这些数字。 IPython报告的计时时间以纳秒为单位 (请注意ns缩写)。 Python以微秒usec )报告时间。

1微秒是1000纳秒; 归一化为纳秒Python报告为16.3纳秒,因此速度只有5倍。

但是,我无法复制您的发现。 在virtualenv中使用相同的Python二进制文件来直接运行IPython:

venv-3.6 $ bin/ipython
Python 3.6.2 (default, Jul 18 2017, 14:26:50)
Type "copyright", "credits" or "license" for more information.

IPython 5.2.2 -- An enhanced Interactive Python.
?         -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help      -> Python's own help system.
object?   -> Details about 'object', use 'object??' for extra details.

In [1]: %timeit a=1
100000000 loops, best of 3: 11.9 ns per loop

In [2]:
Do you really want to exit ([y]/n)? y

venv-3.6 $ bin/python -m timeit 'a=1'
100000000 loops, best of 3: 0.0121 usec per loop

并在Jupyter笔记本中,再次使用相同的virtualenv; 这本质上驱动了ipython,因此正如预期的那样,没有真正的区别:

%timeit a=1
100000000 loops, best of 3: 11.8 ns per loop

因此,这就是11.9 vs 12.1 vs 11.8纳秒; 距离太近,无法产生差异。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM