我对ipython %%timeit
发生的事情非常困惑。
In [1]: %%timeit for i in range(10):
....: print(i)
....:
....:
....:
....:
即使在几次进入或甚至在按下Ctrl+C
之后,它也不会结束提示。有人可以分享一些想法吗?我正在使用Winpython。
答案 0 :(得分:0)
你可以将%% timeit行留空:
%%timeit
for i in range(10):
print(i)
答案 1 :(得分:0)
当使用单元格魔术(%%
前缀,vs %
作为线魔法)时,魔术词之后的东西是可以做各种事情的参数。在timeit
的情况下,您给了它一些设置代码,显然有一些意想不到的结果:
timeit
Docstring:Python语句或表达式的执行时间
用法,在行模式下:
%timeit [-n<N> -r<R> [-t|-c] -q -p<P> -o] statement
或在单元格模式下:%%timeit [-n<N> -r<R> [-t|-c] -q -p<P> -o] setup_code code code...
使用
timeit
模块执行Python语句或表达式。此功能既可以用作线条也可以用作单元格魔法:
在行模式下,您可以计算单行语句(尽管可以使用分号链接多个语句)。
在单元格模式下,第一行中的语句用作设置代码(已执行但未定时),并且单元的主体是定时的。单元体可以访问在设置代码中创建的任何变量。
显然魔术处理器没有在块片段上出错,所以它可能永远不会结束?或者它可能没有任何可视指示完成设置代码块,然后等待一些代码时间。
那就是说,对我来说(Python 3.6.1上的IPython 5.3.0),我得到了预期的语法错误:
In [1]: %%timeit for x in range(3):
...: x*x
...:
File "<unknown>", line 1
for x in range(3):
^
SyntaxError: unexpected EOF while parsing
您使用的是什么版本的IPython?它可能是一个应该报告的错误。