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

时间:2013-06-26 02:48:23

标签: ipython ipython-notebook timeit

我希望捕获并绘制5个左右timeit次调用的结果,并以 N 的对数增加,以显示methodX()与输入的比例。

到目前为止,我已经尝试过:

output = %timeit -r 10 results = methodX(N)

它不起作用......

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

有人这样做过还是尝试过?

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

2 个答案:

答案 0 :(得分:28)

这个重复的问题Capture the result of an IPython magic functionanswer证明此后已经实施。

使用%timeit选项调用-o魔法,例如:

%timeit -o <statement>

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

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

答案 1 :(得分:1)

  

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

不,不。

在开发中有te %%capture单元魔法。 另一种方法是修改timeit magic来返回值而不是打印,或者使用timeit模块本身。补丁欢迎。