Как сохранить результат от % % timeit cell magic?


Я не могу понять, как сохранить результат от магии клеток - %%timeit? Я читал:

  1. можете ли вы захватить результаты магических методов ipython?
  2. захват результата магической функции IPython

И в этом вопросе ответы только о линейной магии. В режиме line (%) это работает:

In[1]: res = %timeit -o np.linalg.inv(A)

Но в режиме ячейки(%%) это не :

In[2]: res = %%timeit -o 
       A = np.mat('1 2 3; 7 4 9; 5 6 1')
       np.linalg.inv(A)
Он просто выполняет клетку, никакой магии. Это жучок или я делаешь что-то не так?
1 5

1 ответ:

Можно использовать переменную _ (хранит последний Результат) после ячейки %%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>

Я не думаю, что это ошибка, потому что команды режима ячейки должны быть первой командой в этой ячейке, поэтому вы не можете ничего поместить (даже res = ...) перед этой командой.

Однако вам все еще нужен -o, потому что в противном случае переменная _ содержит None.