你能捕获ipython魔法的输出吗?(timeit)

Gus*_*Gus 26 ipython timeit ipython-notebook

我希望捕获并绘制5个左右timeit调用的结果,并以对数增加N的大小来显示methodX()带有输入的比例.

到目前为止,我尝试过:

output = %timeit -r 10 results = methodX(N)
Run Code Online (Sandbox Code Playgroud)

这是行不通的...

无法在文档中找到信息.我觉得你应该能够至少拦截打印的字符串.之后,我可以解析它以提取我的信息.

有没有人这样做或尝试过?

PS:这是一个ipython笔记本,如果这是一个差异.

Igu*_*aut 36

这个重复的问题捕获IPython魔术函数的结果有一个答案,证明这已经实现了.

%timeit用以下-o选项调用魔法:

%timeit -o <statement>
Run Code Online (Sandbox Code Playgroud)

返回一个TimeitResult对象,该对象是一个简单对象,其中包含有关%timeitrun作为属性的所有信息 例如:

In [1]: result = %timeit -o 1 + 2
Out[1]: 10000000 loops, best of 3: 23.2 ns per loop

In [2]: result.best
Out[2]: 2.3192405700683594e-08
Run Code Online (Sandbox Code Playgroud)

  • @ StevenC.Howell您可以在没有作业的情况下使用`%% timeit -o`.它将返回一个`TimeitResult`对象,并且由于IPython的输出捕获,您可以通过访问`_`来检索结果. (6认同)
  • 此外,如果添加“-q”,则不会得到正常输出。 (2认同)