Digamos que estoy haciendo un análisis de datos más grande en el cuaderno Jupyter / Ipython con muchos cálculos que consumen mucho tiempo. Luego, por alguna razón, tengo que apagar el servidor local de jupyter I, pero me gustaría volver a hacer el análisis más tarde, sin tener que volver a realizar todos los cálculos que consumen mucho tiempo.
Lo que me gustaría hacer es pickle
almacenar toda la sesión de Jupyter (todos los marcos de datos de pandas, np.arrays, variables, ...) para poder apagar el servidor de forma segura sabiendo que puedo volver a mi sesión exactamente en el mismo estado que antes de.
¿Es incluso técnicamente posible? ¿Hay alguna funcionalidad incorporada que pasé por alto?
EDITAR: en base a esta respuesta, hay una %store
magia que debería ser "pepinillo ligero". Sin embargo, debe almacenar las variables manualmente de esta manera:
#inside a ipython/nb session
foo = "A dummy string"
%store foo
cerrando seion, reiniciando kernel
%store -r foo
# r para actualizar
print(foo) # "A dummy string"
que está bastante cerca de lo que me gustaría, pero tener que hacerlo manualmente y no poder distinguir entre diferentes sesiones lo hace menos útil.
fuente
Respuestas:
Creo que Dill responde bien a tu pregunta.
Guardar una sesión de Notebook:
Restaurar una sesión de Notebook:
Fuente
fuente
(Prefiero comentar que ofrecer esto como una respuesta real, pero necesito más reputación para comentar).
Puede almacenar la mayoría de las variables similares a datos de forma sistemática. Lo que suelo hacer es almacenar todos los marcos de datos, matrices, etc. en pandas.HDFStore . Al comienzo del cuaderno, declare
y luego almacenar las nuevas variables a medida que las produzca
Al final, probablemente sea una buena idea hacer
antes de apagar el servidor. La próxima vez que desee continuar con el cuaderno:
A decir verdad, también preferiría la funcionalidad incorporada en el portátil ipython. No puede guardar todo de esta manera (por ejemplo, objetos, conexiones) y es difícil mantener el cuaderno organizado con tantos códigos estándar.
fuente
Esta pregunta está relacionada con: ¿Cómo almacenar en caché en IPython Notebook?
Para guardar los resultados de las celdas individuales, la magia del almacenamiento en caché es útil.
Al volver a ejecutar el cuaderno, el contenido de esta celda se carga desde la caché.
Esto no responde exactamente a su pregunta, pero podría ser suficiente cuando los resultados de todos los largos cálculos se recuperen rápidamente. Esto, en combinación con presionar el botón de ejecutar todo en la parte superior del portátil, es para mí una solución viable.
La magia de la caché todavía no puede salvar el estado de todo un portátil . Que yo sepa, todavía no existe ningún otro sistema para reanudar un "cuaderno". Esto requeriría guardar todo el historial del kernel de Python. Después de cargar el portátil y conectarse a un kernel, se debe cargar esta información.
fuente