如何存储来自%% timeit cell magic的结果?

god*_*ygo 11 python ipython ipython-magic

我无法弄清楚如何存储细胞魔法的结果 - %%timeit?我读了:

  1. 你能捕获ipython魔法的输出吗?
  2. 捕获IPython魔术函数的结果

而在这个问题中只回答线魔术.在行模式(%)这适用:

In[1]: res = %timeit -o np.linalg.inv(A)
Run Code Online (Sandbox Code Playgroud)

但在单元格模式(%%)中它没有:

In[2]: res = %%timeit -o 
       A = np.mat('1 2 3; 7 4 9; 5 6 1')
       np.linalg.inv(A)
Run Code Online (Sandbox Code Playgroud)

它只是执行单元格,没有魔法.这是一个错误还是我做错了什么?

MSe*_*ert 10

您可以_%%timeit -o单元格后使用变量(存储最后的结果)并将其分配给某个可重用变量:

In[2]: %%timeit -o 
       A = np.mat('1 2 3; 7 4 9; 5 6 1')
       np.linalg.inv(A)
Out[2]: blabla
        <TimeitResult : 1 loop, best of 3: 588 µs per loop>

In[3]: res = _

In[4]: res
Out[4]: <TimeitResult : 1 loop, best of 3: 588 µs per loop>
Run Code Online (Sandbox Code Playgroud)

我不认为这是一个错误,因为单元模式命令必须是该单元格中的第一个命令,因此您不能res = ...在该命令前放置任何内容(甚至不是).

但是你仍然需要,-o否则_变量包含None.

  • 而 `res` 有许多属性,你可以通过 `res.&lt;tab&gt;` 或 `vars(res)` 看到。 (2认同)