Disons que je fais une analyse de données plus large dans le notebook Jupyter / Ipython avec beaucoup de calculs chronophages. Ensuite, pour une raison quelconque, je dois arrêter le serveur local jupyter I, mais je voudrais revenir à l'analyse plus tard, sans avoir à refaire tous les calculs chronophages.
Ce que je veux l' amour à faire est pickle
ou stocker toute la session Jupyter (tous les pandas géants dataframes, np.arrays, variables, ...) pour que je puisse arrêter en toute sécurité le serveur sachant que je peux revenir à ma session exactement le même état que avant.
Est-ce même techniquement possible? Y a-t-il une fonctionnalité intégrée que j'ai négligée?
EDIT: sur la base de cette réponse, il existe une %store
magie qui devrait être "pickle léger". Cependant, vous devez stocker les variables manuellement comme ceci:
#inside a ipython/nb session
foo = "A dummy string"
%store foo
fermeture de seeion, redémarrage du noyau
%store -r foo
# r pour actualisation
print(foo) # "A dummy string"
ce qui est assez proche de ce que je souhaiterais, mais devoir le faire manuellement et ne pas pouvoir faire la distinction entre les différentes sessions le rend moins utile.
la source
Réponses:
Je pense que Dill répond bien à votre question.
Enregistrer une session Notebook:
Restaurer une session Notebook:
La source
la source
(Je préfère commenter plutôt que d'offrir cela comme une réponse réelle, mais j'ai besoin de plus de réputation pour commenter.)
Vous pouvez stocker la plupart des variables de type données de manière systématique. Ce que je fais habituellement, c'est stocker toutes les dataframes, tableaux, etc. dans pandas.HDFStore . Au début du cahier, déclarez
puis stockez toutes les nouvelles variables au fur et à mesure que vous les produisez
À la fin, probablement une bonne idée à faire
avant d'éteindre le serveur. La prochaine fois que vous voudrez continuer avec le notebook:
À vrai dire, je préférerais également les fonctionnalités intégrées dans le notebook ipython. Vous ne pouvez pas tout enregistrer de cette façon (par exemple, les objets, les connexions), et il est difficile de garder le cahier organisé avec autant de codes passe-partout.
la source
Cette question est liée à: Comment mettre en cache dans IPython Notebook?
Pour enregistrer les résultats de cellules individuelles, la magie de la mise en cache est pratique.
Lors de la réexécution du notebook, le contenu de cette cellule est chargé à partir du cache.
Cela ne répond pas exactement à votre question, mais cela pourrait suffire à récupérer rapidement les résultats de tous les longs calculs. Ceci, en combinaison avec le bouton pour tout exécuter sur le dessus du portable, est pour moi une solution réalisable.
La magie du cache ne peut pas enregistrer l'état d'un ordinateur portable ensemble encore . A ma connaissance il n'y a pas encore d'autre système pour reprendre un "notebook". Cela nécessiterait de sauvegarder toute l'histoire du noyau python. Après avoir chargé le notebook et connecté à un noyau, ces informations doivent être chargées.
la source