28

我想捕获并绘制 5 个左右调用的结果,其中Ntimeit的大小呈对数递增,以显示如何随输入缩放。methodX()

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

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

这没用...

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

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

PS:这是在 ipython 笔记本中,如果有差异的话。

4

2 回答 2

47

这个重复的问题Capture the result of an IPython magic function有一个答案证明这已经被实现了。

使用以下选项调用%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
于 2014-08-27T16:28:07.777 回答
1

PS:这是在 ipython 笔记本中,如果有差异的话。

不,不是的。

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

于 2013-06-26T06:13:58.047 回答