Есть ли в IPython Notebook метод для профилирования содержимого его ячеек?Профилирование ноутбука - IPython
Если нет, как я могу профилировать часть ячейки или всего ноутбука?
Есть ли в IPython Notebook метод для профилирования содержимого его ячеек?Профилирование ноутбука - IPython
Если нет, как я могу профилировать часть ячейки или всего ноутбука?
IPython Notebook имеет очень полезные команды %prun
и %%prun
. %prun
используется для профилирования одной строки кода, а %%prun
используется для профайла всей ячейки.
Вы можете найти документацию здесь: http://ipython.readthedocs.org/en/stable/interactive/magics.html#magic-prun
Это короткий пример использования:
%%prun -s cumulative
import numpy as np
import scipy.linalg as la
for i in range(30):
a = np.random.randint(100,size=(1000, 1000))
la.inv(a)
Если вы выполняете эту ячейку, выводится что-то вроде
1053 function calls in 4.152 seconds
Ordered by: cumulative time
ncalls tottime percall cumtime percall filename:lineno(function)
1 0.001 0.001 4.152 4.152 <string>:3(<module>)
30 3.502 0.117 3.505 0.117 basic.py:612(inv)
30 0.646 0.022 0.646 0.022 {method 'randint' of 'mtrand.RandomState' objects}
30 0.000 0.000 0.002 0.000 lapack.py:382(get_lapack_funcs)
Мой любимый профилирующего техника% timeit, но есть намного больше возможностей, как показано, например [Здесь] (http://pynash.org/2013/03/06/timing-and-profiling.html) – Jakob