2012-04-15 22 views
65

Come chiudere correttamente Notebook IPython?Come chiudere correttamente Notebook IPython?

Attualmente, chiudo solo le schede del browser e quindi uso Ctrl+C nel terminale.
Sfortunatamente, né exit() né ticchettio Kill kernel upon exit aiuta (uccidono il kernel ma non escono da iPython).

+0

La generosità va letta come 'ho ipython esecuzione a http://127.0.0.1:8888/' .. sorry – richie

+0

il PID di un particolare kernel (aperto a una determinata porta) può essere visto con 'ps -ax' o' top'. Quindi i kernel possono essere selettivamente fermati con [privilegio amministrativo] per terminare quel particolare processo: # kill PID-of-ki Ciò non consente procedure di spegnimento interno per il kernel, ma nemmeno il tipo Ctl-C forzato .... Qualcuno sapere se questo è previsto per jupyter? –

risposta

62

Attualmente non esiste un modo migliore per farlo rispetto a Ctrl + C nel terminale.

Stiamo pensando a come avere uno spegnimento esplicito, ma c'è un po 'di tensione tra il notebook come applicazione per utente singolo, in cui l'utente è libero di fermarlo e come server multiutente, dove solo un admin dovrebbe essere in grado di fermarlo. Non abbiamo ancora capito come gestire le differenze.

(Per i lettori futuri, questa è la situazione con 0,12 e 0,13 rilasciato in fase di sviluppo.)

Aggiornamento dicembre 2017

The Notebook IPython è diventato il Notebook Jupyter. Una versione recente ha aggiunto un comando shell jupyter notebook stop che spegne un server in esecuzione su quel sistema. È possibile passare il numero di porta sulla riga di comando se non è la porta predefinita 8888.

È anche possibile utilizzare nbmanager, un'applicazione desktop che può mostrare server in esecuzione e chiuderli.

Infine, stiamo lavorando per aggiungere:

  • un'opzione di configurazione di arrestare automaticamente il server se non si utilizza per un periodo di tempo specificato.
  • Un pulsante nell'interfaccia utente per arrestare il server. (Sappiamo che è un po 'folle che ci sia voluto tanto. Cambiare l'interfaccia utente è controverso.)
+1

Forse è sufficiente offrire un'opzione per consentire l'uccisione esplicita (tramite un pulsante nel menu?) O non nel file di configurazione e nella riga di comando? In modo che le persone che vogliono che il server sia sempre in esecuzione può semplicemente configurare la configurazione corretta. – gaborous

+5

Sono passati alcuni anni, questa situazione è cambiata? Ctrl + C è ancora l'unico modo sicuro per spegnere un server iPython Notebook? – EFC

+0

Non c'è ancora un modo per spegnerlo dall'interfaccia utente del notebook, ma ho scritto [nbmanager] (https://github.com/takluyver/nbmanager), uno strumento in grado di elencare e uccidere i server ei kernel di notebook. –

4

Provare ad uccidere il processo pythonw dal Task Manager (se Windows) se non funziona nient'altro.

2
Linux (Ubuntu 14.04) 

Come accennato, cercare di uccidere ipython processi notebook correttamente prima di andare alla scheda "running" nella sessione del browser ipynb/jupyter, e quindi controllare terminali aperti sulla console e arrestare con ctrl-c. Quest'ultimo dovrebbe essere evitato se possibile.

Se si esegue un ipython notebook list e si continua a visualizzare i server ipython in esecuzione su porte diverse, prendere nota delle porte a cui sono serviti i notebook esistenti. Arrestare quindi il porte TCP:

fuser -k 'port#'/tcp 

Non sono sicuro se ci sono altri rischi connessi con fare questo. Se è così, fammi sapere.

15

Se si esegue jupyter in background come me:

jupyter notebook &> /dev/null & 

Poi per uscire jupyter completamente, invece di Ctl-C, fa un comando alias:

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

Riavviare il terminale.Elimina tutte le istanze jupyter:

quitjupyter 

Nota: utilizzare le virgolette all'interno di virgolette singole come mostrato sopra. L'altro modo valuterà l'espressione prima di scriverla sul tuo .bashrc (vuoi scrivere il comando stesso non "kill 1430" o qualunque numero di processo possa essere associato a un'istanza jupyter corrente). Ovviamente puoi usare qualsiasi alias che desideri. In realtà uso 'qjup':

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

Riavviare il terminale. Uccidi tutte le istanze jupyter:

qjup 
+0

Il 'kill $ (pgrep jupyter)' di per sé è eccellente. Stavo eseguendo 'jupyter notebook' da un terminale remoto che si è schiantato: l'approccio CTRL + C è quindi impossibile al momento del login. Salvare l'opzione nucleare di riavvio remoto, questo è grandioso. – MichaelChirico

+1

Perché non solo "pkill jupyter"? 'pkill' è' pgreb', ma per i processi di uccisione. – Nelson

0

Nella sessione del browser si può anche andare a Kernel e quindi fare clic su Restart and Clear Output.

0

Ambiente


Il mio sistema operativo è Ubuntu 16.04 e jupyter è 4.3.0.

Metodo


In primo luogo, mi sono collegato fuori jupyter alla sua homepage su del browser (il pulsante di logout è in alto a destra)

In secondo luogo, il tipo in Ctrl + C nel vostro terminale e si vede :

[I 15: 59: 48,407 NotebookApp] interrotto Serve notebook di directory locale :/home/nomeutente 0 acti ve kernel

The Notebook Jupyter è in esecuzione a: http://localhost:8888/?token=a572c743dfb73eee28538f9a181bf4d9ad412b19fbb96c82

Shutdown questo server notebook (y/[n])?

Ultimo passo, digita y entro 5 secondi, e se mostra:

[C 15: 59: 50,407 NotebookApp] Shutdown confermato
[I 15: 59: 50,408 NotebookApp] Chiusura dei kernel

Congratulazioni! Chiudi il tuo jupyter con successo.

1

In realtà, credo che ci sia un modo più pulito di uccidere il processo (i) utilizzando kill o task manager.

In Jupyter Notebook Dashboard (l'interfaccia del browser che viene visualizzata al primo avvio di "jupyter notebook"), consente di individuare la posizione dei file del blocco note che sono stati chiusi nel browser, ma i cui kernel potrebbero essere ancora in esecuzione.

I file di notebook iPython vengono visualizzati con un'icona di un libro, mostrati in verde se ha un kernel in esecuzione o grigio se il kernel non è in esecuzione.

Basta selezionare la casella di spunta accanto al file in esecuzione, quindi fare clic sul pulsante Arresta che appare sopra di esso.

Ciò interromperà correttamente il kernel associato a quel notebook specifico.

8

Penso che la risposta accettata sia obsoleta e non sia più valida.

È possibile terminare il notebook jupyter dall'interfaccia web sulla voce di menu file.

enter image description here

Quando si sposta il cursore del mouse su "Chiudi e halt", vedrete seguente spiegazione.

enter image description here

E quando si fa clic su "Chiudi e battuta d'arresto", si vedrà seguente messaggio sullo schermo del terminale.

enter image description here

+1

Questa risposta dovrebbe avere 100 di upvotes. Cheers –

+3

Per chiarire, ciò interrompe il * kernel *, il processo che esegue il codice Python. Non blocca il * notebook server *, che rende le interfacce per notebook, si occupa di caricare e salvare file, ecc. –