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

Сохранить сеанс в IPython, как в MATLAB?

Было бы полезно сохранить переменные сеанса, которые могут быть легко загружены в память на более позднем этапе.

4b9b3361

Ответ 1

In [23]: %logstart /tmp/session.log
Activating auto-logging. Current session state plus future input saved.
Filename       : /tmp/session.log
Mode           : backup
Output logging : False
Raw input log  : False
Timestamping   : False
State          : active

In [24]: x = 1

In [25]: %logstop

In [26]: quit()
Do you really want to exit ([y]/n)? y

Затем мы можем восстановить сеанс с помощью:

% ipython -log /tmp/session.log 
Activating auto-logging. Current session state plus future input saved.
Filename       : ipython_log.py
...

In [1]: x
Out[1]: 1

Подробнее о "Журнале и восстановлении сеанса" см. документы.

Обратите внимание, что это просто хранит команды, запущенные IPython. Это не спасает состояние сеанса IPython. Для восстановления сеанса требуется повторное выполнение команды.


Если вы установите переменную среды PYTHONSTARTUP, чтобы указать на файл, называемый, скажем, startup.py:

PYTHONSTARTUP=/path/to/startup.py

затем поместите следующее в /path/to/startup.py:

try:
    # https://stackoverflow.com/a/5377051/190597 (Tom Dunham)
    __IPYTHON__
except NameError:
    pass
else:
    # https://stackoverflow.com/a/15898875/190597 (user2261139)
    from IPython import get_ipython
    ipython = get_ipython()
    ipython.magic("%logstart /tmp/session.log")

тогда IPython будет автоматически вызывать% logstart всякий раз, когда вы начинаете интерактивный сеанс.

Ответ 2

В поисках чего-то подобного я наткнулся на save_ipython_variables:

save-ipython-variables позволяет... сохранить глобальный IPython переменных на диск, и загрузить их обратно в глобальную пространство имен, когда они вам понадобятся снова, даже в целом новом IPython сессии.

У меня еще не было возможности использовать его, но выглядит многообещающим.

Ответ 3

Я еще не пробовал этого, но, начиная с ответа AE Drew, я нашел возможную альтернативу. Похоже, у IPython есть встроенная магическая команда, которая делает это % store:

% хранит магию для облегчения настойчивости. Сохраняет переменные, псевдонимы и макросы в базе данных IPythons. Чтобы автоматически восстановить сохраненные переменные при запуске, добавьте это в свой файл ipython_config.py:

c.StoreMagic.autorestore = True

Ответ 4

Существует также волшебная команда history, которая может использоваться для записи всех команд/операторов, заданных пользователем.

Синтаксис: %history -f file_name. Также %save file_name start_line-end_line, где star_line - это номер стартовой строки, а end_line - конечный номер строки. Полезно в случае выборочного сохранения.

%run может использоваться для выполнения команд в сохраненном файле

Ответ 5

Не мое решение, но это, кажется, самое близкое решение, если вы используете ipython: fooobar.com/info/247762/...