Можете ли вы захватить вывод методов магии ipython? (Timeit) - программирование
Подтвердить что ты не робот

Можете ли вы захватить вывод методов магии ipython? (Timeit)

Я хочу захватить и отобразить результаты с 5 или около того timeit вызовов с логарифмически увеличивающимися размерами N, чтобы показать, как methodX() масштабируется с вводом.

До сих пор я пробовал:

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

Это не работает...

Невозможно найти информацию в документах. Я чувствую, что вы должны, по крайней мере, перехватить строку, которая напечатана. После этого я могу разобрать его, чтобы извлечь информацию.

Кто-нибудь сделал это или попробовал?

PS: это в ноутбуке ipython, если это делает diff.

4b9b3361

Ответ 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. Патчи приветствовались.