Можете ли вы захватить вывод методов магии ipython? (Timeit)
Я хочу захватить и отобразить результаты с 5 или около того timeit
вызовов с логарифмически увеличивающимися размерами N, чтобы показать, как methodX()
масштабируется с вводом.
До сих пор я пробовал:
output = %timeit -r 10 results = methodX(N)
Это не работает...
Невозможно найти информацию в документах. Я чувствую, что вы должны, по крайней мере, перехватить строку, которая напечатана. После этого я могу разобрать его, чтобы извлечь информацию.
Кто-нибудь сделал это или попробовал?
PS: это в ноутбуке ipython, если это делает diff.
Ответы
Ответ 1
Этот дублированный вопрос Захват результата магической функции IPython имеет ответ , демонстрирующий, что с тех пор были реализованы.
Вызов магии %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
Ответ 2
PS: это в ноутбуке ipython, если это делает diff.
Нет, это не так.
В dev есть te %%capture
cell magic.
Другой способ - изменить магию timeit для возврата значения вместо печати или использовать сам модуль timeit. Патчи приветствовались.