Digamos que eu esteja fazendo uma análise de dados maior no notebook Jupyter / Ipython com muitos cálculos demorados feitos. Então, por algum motivo, eu tenho que desligar o servidor local jupyter I, mas gostaria de voltar a fazer a análise mais tarde, sem ter que passar por todos os cálculos demorados novamente.
O que eu gostaria amor fazer é pickle
ou armazenar toda a sessão Jupyter (todos os pandas dataframes, np.arrays, variáveis, ...) para que eu possa com segurança desligar o servidor saber que posso voltar para a minha sessão exatamente no mesmo estado em antes.
É mesmo tecnicamente possível? Há alguma funcionalidade interna que esqueci?
EDITAR: com base nesta resposta, há uma %store
mágica que deveria ser "pickle leve". No entanto, você deve armazenar as variáveis manualmente da seguinte forma:
#inside a ipython/nb session
foo = "A dummy string"
%store foo
fechando a sessão, reiniciando o kernel
%store -r foo
# r para atualização
print(foo) # "A dummy string"
o que é bastante próximo do que eu gostaria, mas ter que fazer isso manualmente e ser incapaz de distinguir entre sessões diferentes torna-o menos útil.
fonte
Respostas:
Acho que Dill responde bem à sua pergunta.
Salvar uma sessão do Notebook:
Restaurar uma sessão do Notebook:
Fonte
fonte
(Prefiro comentar a oferecer isso como uma resposta real, mas preciso de mais reputação para comentar.)
Você pode armazenar a maioria das variáveis semelhantes a dados de uma forma sistemática. O que geralmente faço é armazenar todos os dataframes, matrizes, etc. no pandas.HDFStore . No início do caderno, declare
e, em seguida, armazene quaisquer novas variáveis conforme você as produz
No final, provavelmente é uma boa ideia fazer
antes de desligar o servidor. Na próxima vez que você quiser continuar com o bloco de notas:
Verdade seja dita, eu também prefiro a funcionalidade integrada no notebook ipython. Você não pode salvar tudo desta forma (por exemplo, objetos, conexões), e é difícil manter o notebook organizado com tantos códigos clichê.
fonte
Esta questão está relacionada a: Como armazenar em cache no Notebook IPython?
Para salvar os resultados de células individuais, a mágica do cache é útil.
Ao executar novamente o bloco de notas, o conteúdo desta célula é carregado do cache.
Isso não é exatamente uma resposta à sua pergunta, mas pode ser o suficiente quando os resultados de todos os longos cálculos forem recuperados rapidamente. Esta combinação de apertar o botão run-all na parte superior do notebook é para mim uma solução viável.
A magia cache não pode salvar o estado de um caderno inteiro ainda . Pelo que sei, ainda não existe outro sistema para retomar um "notebook". Isso exigiria salvar todo o histórico do kernel do python. Após carregar o notebook e conectar a um kernel, esta informação deve ser carregada.
fonte