2013-06-26 97 views
15

我想捕獲並繪製5個左右的結果timeit調用對數增加尺寸N以顯示methodX()如何隨輸入縮放。你能捕獲ipython的魔法方法的輸出嗎? (timeit)

到目前爲止,我曾嘗試:

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

它不工作...

也無法找到的文檔信息。我覺得你應該至少可以攔截打印的字符串。之後,我可以解析它來提取我的信息。

有沒有人做過這個或試過?

PS:這是在ipython筆記本,如果這使差異。

+0

的〔捕獲IPython的魔法函數的結果]可能重複(http://stackoverflow.com/questions/25289437/capture-the-result-of-an-ipython-magic-function ) – Iguananaut

回答

17

這個重複的問題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 
+0

這似乎只針對一些魔術命令(可能只是'%timeit'?)。它不適用於'%% timeit'。使用'result = %% timeit -o'作爲單元格的行返回'None'。 –

+2

@ StevenC.Howell您可以使用'%% timeit -o'而無需分配。它會返回一個'TimeitResult'對象,並且感謝IPython的輸出捕獲,您可以通過訪問'_'來檢索結果。 – user2923419

0

PS:這是在一個ipython筆記本,如果這使差異。

不,它不。

On dev there is te %%capture cell magic。 另一種方法是修改timeit magic來返回值而不是打印,或者使用timeit模塊本身。補丁歡迎。