python background ipython ipython-notebook ipython-magic

Ejecutar algunas tareas en el cuaderno de IPython en modo separado



ipython display image (2)

¿Es posible ejecutar algunas tareas largas en IPython Notebook, cerrar el navegador y después de algún tiempo volver a abrirlo y revelar los resultados de estas tareas?

Diga, tarea como esta:

def f(): import time time.sleep(100) with open("result.txt", "w") as fh: fh.write("Done.")

Si ejecuto la tarea normalmente y cierro el navegador antes de finalizar, cuando lo abro, no veo ''result.txt'' .

Si lo ejecuto utilizando %px magic o la ejecución paralela, nuevamente no hay resultados si cierro el navegador antes de completarlo.

¿Alguna extensión o hacks disponibles? ¿O me estoy perdiendo algo?

ACTUALIZACIÓN 1:

Aunque hay soporte de control de trabajos en segundo plano en IPython , los trabajos en segundo plano se vuelven obsoletos después de desconectar el navegador. Lo único que se me ocurre es emitir %connect_info antes de cerrar el navegador y luego conectarme desde el terminal de pantalla usando

ipython console --existing <ID>.json

y ejecutar mis trabajos desde allí.

ACTUALIZACIÓN 2:

Aún más útil es la combinación de la ipython console y el control del trabajo. Es decir, abro la consola y la adjunto a la misma sesión al iniciar un trabajo de fondo en el navegador y luego puedo cerrarla hasta que el trabajo termine.

ACTUALIZACIÓN 3:

Parece funcionar desde la versión iPython 1.0dev sin hacks. simplemente ejecuta lo que desea, cierre el navegador y aún se ejecuta.


No sé si esto es nuevo en IPython 1.0, pero en mi cuaderno IPython, si llamo a su función f() y cierro el navegador, el kernel se ejecuta en segundo plano y después de un tiempo (cambié a time.sleep(10) Veo el archivo results.txt generado. No creo que el kernel, que normalmente inicias en una consola, se detenga cuando cierras la ventana del navegador. Déjame saber si estoy equivocado.


Normalmente uso la pantalla de comandos de Linux, que abre un shell diferente que puede ejecutarse en segundo plano.

Por ejemplo, cuando ingresas por primera vez a tu shell, escribes ''pantalla''. Entonces te da una nueva terminal. Inicie ipython allí con el comando anterior. Una vez que se está ejecutando, en su teclado presione CTRL + A CTRL + D. El programa comienza a ejecutarse en segundo plano y puede cerrar el terminal. Si desea volver a él, escriba ''screen -r'' en la línea de comandos.