2012-04-15 198 views
65

¿Cómo cerrar IPython Notebook correctamente?¿Cómo cerrar IPython Notebook correctamente?

Actualmente, cierro las pestañas del navegador y luego uso Ctrl+C en el terminal.
Desafortunadamente, ni exit() ni tic-tac Kill kernel upon exit ayudan (matan el kernel pero no salen del iPython).

+0

La generosidad debe decir: 'He IPython funcionando a http://127.0.0.1:8888/' .. lo siento – richie

+0

El PID de un kernel en particular (abierto en un puerto determinado) se puede ver con 'ps -ax' o' top'. Por lo tanto, los kernels se pueden detener selectivamente con [privilegio administrativo] para finalizar ese proceso en particular: # kill PID-of-ki Esto no permite procedimientos de cierre interno para el kernel, pero tampoco lo hace el tipo forzado Ctl-C .... ¿Alguien ¿Sabes si esto está planeado para jupyter? –

Respuesta

62

Actualmente no existe una forma mejor de hacerlo que Ctrl + C en el terminal.

Estamos pensando en cómo tener un cierre explícito, pero hay cierta tensión entre el portátil como una aplicación de usuario único, donde el usuario puede detenerlo, y como un servidor de múltiples usuarios, donde solo un el administrador debería ser capaz de detenerlo. Todavía no hemos resuelto cómo manejar las diferencias.

(Para los futuros lectores, esta es la situación con 0,12 y 0,13 lanzado en el desarrollo.)

actualización diciembre 2017

El IPython portátil se ha convertido en el Cuaderno Jupyter. Una versión reciente ha agregado un comando de shell jupyter notebook stop que cerrará un servidor que se ejecuta en ese sistema. Puede pasar el número de puerto en la línea de comandos si no es el puerto predeterminado 8888.

También puede usar nbmanager, una aplicación de escritorio que puede mostrar los servidores en ejecución y cerrarlos.

Por último, estamos trabajando para añadir:

  • Una opción de configuración para cerrar automáticamente el servidor si no se utiliza durante un tiempo especificado.
  • Un botón en la interfaz de usuario para cerrar el servidor. (Sabemos que es un poco loco que haya tardado tanto. Cambiar la interfaz de usuario es controvertido.)
+1

¿Entonces quizás solo ofrezca una opción para permitir la eliminación explícita (mediante un botón en el menú?) O no en el archivo de configuración y la línea de comando? Para que las personas que quieren que el servidor siempre se ejecute pueden simplemente configurar la configuración correcta. – gaborous

+5

Han pasado algunos años, ¿ha cambiado esta situación? ¿Ctrl + C sigue siendo la única forma segura de cerrar un servidor iPython Notebook? – EFC

+0

Todavía no hay una manera de cerrarlo desde el interior de la IU del portátil, pero escribí [nbmanager] (https://github.com/takluyver/nbmanager), una herramienta que puede listar y eliminar los servidores y núcleos de los portátiles. –

4

Pruebe matar el proceso de pythonw desde el Administrador de tareas (si es Windows) si nada funciona.

2
Linux (Ubuntu 14.04) 

Como se ha mencionado, tratar de matar ipython procesos portátiles adecuadamente yendo primero a la pestaña "corriendo" en su sesión del navegador ipynb/jupyter y compruebe los terminales abiertos en la consola y apagar con Ctrl-C. Esto último debe evitarse si es posible.

Si ejecuta ipython notebook list y continúa viendo ejecutar servidores ipython en diferentes puertos, anote a qué puertos se están atendiendo los portátiles existentes. Luego cierre sus puertos TCP:

fuser -k 'port#'/tcp 

No estoy seguro de si existen otros riesgos al hacer esto. Si es así, házmelo saber.

15

Si ejecuta jupyter en el fondo como yo:

jupyter notebook &> /dev/null & 

A continuación, para salir jupyter por completo, en lugar de Ctrl-C, crea un alias de comando:

echo 'alias quitjupyter="kill $(pgrep jupyter)"' >> ~/.bashrc 

Reinicie el terminal.Mata a todas las instancias jupyter:

quitjupyter 

Nota: utilice comillas dobles dentro de las comillas simples como se muestra arriba. A la inversa, se evaluará la expresión antes de escribirla en .bashrc (se desea escribir el comando en sí mismo, no 'kill 1430' o el número de proceso que pueda asociarse con una instancia actual de jupyter). Por supuesto, puedes usar cualquier alias que desees. De hecho, uso 'qjup':

echo 'alias qjup="kill $(pgrep jupyter)"' >> ~/.bashrc 

Reinicie su terminal. Matar a todas las instancias jupyter:

qjup 
+0

El 'kill $ (pgrep jupyter)' por sí mismo es excelente. Estaba ejecutando 'jupyter notebook' desde un terminal remoto que se colgó: el enfoque CTRL + C es imposible al volver a iniciar sesión. Al guardar la opción nuclear de reiniciar el control remoto, esto es genial. – MichaelChirico

+1

¿Por qué no simplemente 'pkill jupyter'? 'pkill' es' pgreb', pero para matar procesos. – Nelson

0

En la sesión del navegador también se puede ir a Kernel y haga clic en Restart and Clear Output.

0

Medio Ambiente


Mi sistema operativo es Ubuntu 16.04 y jupyter es 4.3.0.

Método


En primer lugar, me conecté a cabo jupyter en su página web en el navegador (el botón de cierre de sesión es en la parte superior derecha)

En segundo lugar, el tipo de Ctrl + C en su terminal y se nota :

[I 15: 59: 48.407 NotebookApp] interrumpido Sirviendo libros de registro de directorio local :/home/usuario 0 acti cinco núcleos

El Jupyter Notebook está funcionando a: http://localhost:8888/?token=a572c743dfb73eee28538f9a181bf4d9ad412b19fbb96c82

Shutdown este servidor cuaderno (y/[n])?

último paso, tipo en y dentro de 5 seg, y si muestra:

[C 15: 59: 50.407 NotebookApp] Shutdown confirmó
[I 15: 59: 50.408 NotebookApp] Cerrando kernels

¡Felicitaciones! Usted cierra su jupyter con éxito.

1

En realidad, creo que hay una manera más limpia que matar los procesos que utilizan kill o el administrador de tareas.

En el Jupyter Notebook Dashboard (la interfaz del navegador que ve cuando abre por primera vez 'jupyter notebook'), busque la ubicación de los archivos del notebook que ha cerrado en el navegador, pero cuyos kernels aún pueden estar ejecutándose.

Los archivos de iPython Notebook aparecen con un icono de libro, que se muestra en verde si tiene un kernel en ejecución, o gris si el kernel no se está ejecutando.

Simplemente seleccione la casilla al lado del archivo en ejecución, luego haga clic en el botón Apagar que aparece arriba.

Esto cerrará correctamente el kernel asociado con ese portátil específico.

8

Creo que la respuesta aceptada está obsoleta y ya no es válida.

Puede finalizar el cuaderno jupyter desde la interfaz web en el elemento menú de archivo.

enter image description here

Al mover el cursor del ratón sobre "estrecha y alto", verá el siguiente explicación.

enter image description here

Y cuando se hace clic en "Cerrar y detener", verá el siguiente mensaje en la pantalla del terminal.

enter image description here

+1

Esta respuesta debe tener 100 votos positivos. Cheers –

+3

Para aclarar, esto detiene * kernel *, el proceso que ejecuta su código de Python. No detiene el * servidor portátil *, que hace las interfaces del portátil, se ocupa de cargar y guardar archivos, etc. –

Cuestiones relacionadas