ipython %% timeit提示符中的问题

时间:2017-09-08 00:51:14

标签: python

我对ipython %%timeit发生的事情非常困惑。

In [1]: %%timeit for i in range(10):
    ....: print(i)
    ....: 
    ....: 
    ....: 
    ....: 

即使在几次进入或甚至在按下Ctrl+C之后,它也不会结束提示。有人可以分享一些想法吗?我正在使用Winpython。

2 个答案:

答案 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?它可能是一个应该报告的错误。