Скажем, я выполняю более крупный анализ данных в блокноте Jupyter / Ipython с большим количеством трудоемких вычислений. Затем по какой-то причине мне нужно выключить локальный сервер jupyter I, но я хотел бы вернуться к анализу позже, без необходимости повторять все трудоемкие вычисления снова.
Что бы я хотел бы сделать это pickle
или хранить всю сессию Jupyter (все панда dataframes, np.arrays, переменные, ...) , поэтому я могу спокойно выключить сервер , зная , что я могу вернуться к моей сессии в точно таком же состоянии , как перед.
Возможно ли это вообще технически? Есть ли встроенная функция, которую я упустил?
РЕДАКТИРОВАТЬ: на основе этого ответа есть %store
магия, которая должна быть «легким рассолом». Однако вам нужно сохранить переменные вручную следующим образом:
#inside a ipython/nb session
foo = "A dummy string"
%store foo
закрытие экрана, перезапуск ядра
%store -r foo
# r для обновления
print(foo) # "A dummy string"
что довольно близко к тому, что я хотел бы, но необходимость делать это вручную и невозможность различать разные сеансы делает его менее полезным.
источник
Ответы:
Думаю, Дилл хорошо отвечает на ваш вопрос.
Сохраните сеанс записной книжки:
import dill dill.dump_session('notebook_env.db')
Восстановить сеанс записной книжки:
import dill dill.load_session('notebook_env.db')
Источник
источник
(Я бы предпочел прокомментировать, чем предлагать это как фактический ответ, но мне нужно больше репутации, чтобы комментировать.)
Вы можете систематически хранить большинство переменных, подобных данным. Обычно я храню все фреймы данных, массивы и т. Д. В pandas.HDFStore . В начале записной книжки объявите
backup = pd.HDFStore('backup.h5')
а затем сохраните любые новые переменные по мере их создания
backup['var1'] = var1
В конце, наверное, неплохо было бы сделать
перед выключением сервера. В следующий раз, когда вы захотите продолжить работу с записной книжкой:
backup = pd.HDFStore('backup.h5') var1 = backup['var1']
По правде говоря, я бы предпочел встроенную функциональность и в ipython notebook. Вы не можете сохранить все таким образом (например, объекты, соединения), и сложно организовать записную книжку с таким количеством шаблонных кодов.
источник
Этот вопрос связан с: Как кэшировать в IPython Notebook?
Чтобы сохранить результаты отдельных ячеек, пригодится магия кеширования .
При повторном запуске записной книжки содержимое этой ячейки загружается из кеша.
Это не совсем ответ на ваш вопрос, но этого может быть достаточно, когда результаты всех длительных вычислений будут быстро восстановлены. Для меня это в сочетании с нажатием кнопки запуска всего на верхней части ноутбука является приемлемым решением.
Магия кэш не может сохранить состояние целого ноутбука еще . Насколько мне известно, другой системы для возобновления «записной книжки» пока нет. Для этого потребуется сохранить всю историю ядра Python. После загрузки ноутбука и подключения к ядру эта информация должна быть загружена.
источник