Синхронизация и профилирование в IPython 2.x

Я нашел следующую статью: Время и профилирование в IPython от марта. , 2013, но у меня проблемы с определением и использованием магии. Интересно, это потому, что часть информации в статье больше не применяется.

Я сделал:

$ pip install line-profiler
$ pip install psutil
$ pip install memory_profiler 

а затем в моем сеансе IPython я определил:

import memory_profiler

def load_ipython_extension(ip):
    ip.define_magic('memit', memory_profiler.magic_memit)
    ip.define_magic('mprun', memory_profiler.magic_mprun)

Когда, когда я попытаюсь:

%memit

Я получаю: ERROR: Line magic function not defined. Почему?

Кроме того, актуальна ли статья 2013 года для IPython 2.x?


person Amelio Vazquez-Reina    schedule 05.03.2014    source источник


Ответы (1)


Вам также необходимо «зарегистрировать модули», как объяснено далее в посте.

Отредактируйте ~/.ipython/profile_default/ipython_config.py, найдите, раскомментируйте и измените эти списки, чтобы включить:

c.TerminalIPythonApp.extensions = ['line_profiler_ext', 'memory_profiler_ext', ] c.InteractiveShellApp.extensions = ['line_profiler_ext', 'memory_profiler_ext',]

Это сработало для меня, когда я определил профиль и папку расширения $IPythonDIR/extensions.

Не уверен, как заставить это работать, если вы вручную импортируете функции в интерактивную оболочку.

person Jan    schedule 03.04.2014
comment
Спасибо. Вы знаете, что делает регистрация модулей? - person Amelio Vazquez-Reina; 03.04.2014
comment
Нет, не знаю. Извините... Думаю, это потребует понимания того, что делают c.InteractiveShellApp.extensions. - person Jan; 03.04.2014