python
October 10, 2021

Эликсир жизни для Jupyter

Рассмотрим способ повышения комфорта работы в среде Jupyter при обработке больших объемов информации. Речь идет о наболевшей ситуации, когда после долгих ресурсоемких вычислений требуется прервать сессию, однако особого желания повторять вычисления не возникает. Решить эти проблемы поможет библиотека dill, которая сохраняет состояние и позволяет загрузить его снова. Одновременно становится возможным делиться сессией и восстанавливать ее на другом компьютере.

Устанавливает библиотека просто с помощью менеджера пакетов pip:

!pip install dill

Теперь перейдем к применению. Сначала создадим демонстрационные данные:

import pandas as pd
import numpy as np
a = [1,2,3]
b = 'str'
c = np.random.normal(0,5, size=10)
df = pd.DataFrame([2,3,4])

Сохранение сессии осуществляется функцией dump_session, которая получает имя файла:

import dill
dill.dump_session('checkpoint.db')

Затем для восстановления вызывается функция load_session с именем файла с сессией:

import dill
dill.load_session('checkpoint.db')

Для проверки работы сначала сделаем рестарт ядра и попробуем запустить ячейку с обращение к переменной:

Теперь вызовем load_session:

import dill
dill.load_session('checkpoint.db')
c

Следует упомянуть, что под капотом dill использует pickle и следовательно не является безопасным форматом для передачи данных по сети. Ее использование целесообразно в случае полной уверенности, что файл не подвергнут вмешательству злоумышленника.