我希望捕获并绘制5个左右timeit
次调用的结果,并以 N 的对数增加,以显示methodX()
与输入的比例。
到目前为止,我已经尝试过:
output = %timeit -r 10 results = methodX(N)
它不起作用......
无法在文档中找到信息。我觉得你应该能够至少拦截打印的字符串。之后,我可以解析它以提取我的信息。
有人这样做过还是尝试过?
PS:这是一个ipython笔记本,如果这是一个差异。
答案 0 :(得分:28)
这个重复的问题Capture the result of an IPython magic function有answer证明此后已经实施。
使用%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模块本身。补丁欢迎。