Подтвердить что ты не робот

Измерение (макс.) Использования памяти с использованием времени, подобного IPython, но memit

У меня есть простая задача: помимо измерения времени, необходимого для выполнения куска кода в Python, мне нужно измерить объем памяти, необходимый для данного фрагмента кода.

IPython имеет приятную утилиту под названием timeit, которая работает следующим образом:

In [10]: timeit 3 + 3
10000000 loops, best of 3: 24 ns per loop

Я ищу что-то вроде этого:

In [10]: memit 3 + 3
10000000 loops, best of 3: 303 bytes per loop

Я знаю, что это, вероятно, не встроено в IPython, но мне нравится аналог timeit - memit.

4b9b3361

Ответ 1

Фактически, он уже существует, как часть прозаично названного пакета memory_profiler:

In [2]: %memit np.zeros(1e7)
maximum of 3: 76.402344 MB per loop

Дополнительная информация на https://github.com/fabianp/memory_profiler#ipython-integration

Изменить: для этого сначала нужно загрузить его в качестве расширения IPython:

%load_ext memory_profiler

Чтобы IPython всегда загружал расширение memory_profiler при запуске, добавьте его в список c.InteractiveShellApp.extensions в своем профиле ipython_config.py:

$ grep -C2 c.InteractiveShellApp.extensions ~/.ipython/profile_default/ipython_config.py
 # A list of dotted module names of IPython extensions to load.
 #
 c.InteractiveShellApp.extensions = [
   'autoreload',
   'memory_profiler',