Come chiudere correttamente IPython Notebook?


110

Come chiudere correttamente IPython Notebook?

Al momento, chiudo semplicemente le schede del browser e poi le utilizzo Ctrl+Cnel terminale.
Sfortunatamente, exit()né il ticchettio né il ticchettio Kill kernel upon exitaiutano (uccidono il kernel ma non escono da iPython).


Il PID di un particolare kernel (aperto in una particolare porta) può essere visto con ps -axo top. Quindi i kernel possono essere fermati selettivamente con [privilegio amministrativo] per terminare quel particolare processo: # kill PID-of-ki Ciò non consente procedure interne di spegnimento per il kernel, ma nemmeno il tipo Ctl-C forzato .... Qualcuno lo sa se questo è previsto per jupyter?
Dr C

Risposte:


119

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

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

(Per i futuri lettori, questa è la situazione con 0.12 rilasciato e 0.13 in sviluppo.)

Aggiornamento dicembre 2017

Il notebook IPython è diventato il notebook Jupyter. Una versione recente ha aggiunto un jupyter notebook stopcomando shell che spegnerà un server in esecuzione su quel sistema. È possibile passare il numero di porta dalla riga di comando se non è la porta predefinita 8888.

Puoi anche utilizzare nbmanager , un'applicazione desktop che può mostrare i server in esecuzione e spegnerli.

Infine, stiamo lavorando per aggiungere:

  • Un'opzione di configurazione per spegnere automaticamente il server se non lo usi per un periodo di tempo specificato.
  • Un pulsante nell'interfaccia utente per arrestare il server. (Sappiamo che è un po 'folle che ci sia voluto così tanto tempo. La modifica dell'interfaccia utente è controversa.)

1
Forse allora offri solo 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 desiderano che il server sia sempre in esecuzione possono impostare la configurazione corretta.
gaborous

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

Non c'è ancora un modo per spegnerlo dall'interno dell'interfaccia utente del notebook, ma ho scritto nbmanager , uno strumento che può elencare e uccidere server e kernel del notebook.
Thomas K

Quindi presumo che l'uso jupyter notebook &sia una cattiva idea poiché Ctrl+ Cnon si applica a questa situazione
Naveen Dennis

Ho provato questo, ma non c'è modo di digitare nulla nella console che esegue il processo Jupyter Notebook diverso da ctrl + C. Ho provato ad aprire un nuovo powershell / prompt dei comandi e da lì a digitare jupyter notebook stop, ma non ha funzionato.
julianhatwell

24

Se esegui jupyter in background come me:

jupyter notebook &> /dev/null &

Quindi per uscire completamente da jupyter, invece di Ctl-C, crea un comando alias:

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

Riavvia il tuo terminale. Uccidi tutte le istanze di jupyter:

quitjupyter

Nota: utilizzare virgolette doppie 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 qualsiasi 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

Riavvia il tuo terminale. Uccidi tutte le istanze di jupyter:

qjup

Di kill $(pgrep jupyter)per sé è eccellente. Stavo correndo jupyter notebookda un terminale remoto che si è arrestato in modo anomalo: l'approccio CTRL + C è quindi impossibile dopo aver effettuato nuovamente l'accesso. Salvare l'opzione nucleare di riavviare il telecomando, questo è fantastico.
MichaelChirico

2
Perché non solo pkill jupyter? pkillèpgreb , ma per uccidere i processi.
rmstmppr

21

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

È possibile terminare Jupyter Notebook dall'interfaccia web nella voce del menu file.

inserisci qui la descrizione dell'immagine

Quando sposti il ​​cursore del mouse su "chiudi e ferma", vedrai la seguente spiegazione.

inserisci qui la descrizione dell'immagine

E quando fai clic su "chiudi e interrompi", vedrai il seguente messaggio sullo schermo del terminale.

inserisci qui la descrizione dell'immagine


15
Per chiarire, questo arresta il kernel , il processo che esegue il codice Python. Non ferma il server del notebook , che crea le interfacce del notebook, si occupa del caricamento e del salvataggio dei file, ecc.
Thomas K

10

Il primo passo è salvare tutti i taccuini aperti. E poi pensa a spegnere il tuo notebook Jupyter in esecuzione. Puoi usare questo semplice comando:

$ jupyter notebook stop 
Shutting down server on port 8888 ...

Il che prende anche il numero di porta come argomento e puoi spegnere il notebook jupyter con grazia.

Ad esempio:

jupyter notebook stop 8889 
Shutting down server on port 8889 ...

Inoltre, per conoscere la tua attuale istanza juypter in esecuzione, controlla il comando seguente:

shell> juypter notebook list 
Currently running servers:
http://localhost:8888/?token=ef12021898c435f865ec706d7c9af8607a7ba58bbee98632 :: /Users/username/jupyter-notebooks [/code]

7

Questi comandi hanno funzionato per me:

jupyter notebook list # shows the running notebooks and their port-numbers
                      # (for instance: 8080)
lsof -n -i4TCP:[port-number] # shows PID.
kill -9 [PID] # kill the process.

Questa risposta è stata adattata da qui .


5

Prova a uccidere il processo pythonw dal Task Manager (se Windows) se nient'altro funziona.


4
Linux (Ubuntu 14.04)

Come accennato, prova a terminare correttamente i processi del notebook ipython andando prima nella scheda "in esecuzione" nella tua sessione del browser ipynb / jupyter, quindi controlla i terminali aperti sulla tua console e spegnilo con ctrl-c. Quest'ultimo dovrebbe essere evitato se possibile.

Se esegui un ipython notebook liste continui a vedere in esecuzione server ipython su porte diverse, prendi nota delle porte a cui vengono serviti i notebook esistenti. Quindi chiudi le tue porte TCP:

fuser -k 'port#'/tcp 

Non sono sicuro che ci siano altri rischi coinvolti nel fare questo. Se è così, fammi sapere.


2

Ambiente


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

Metodo


Innanzitutto, ho disconnesso jupyter dalla sua homepage sul browser (il pulsante di logout è in alto a destra)

In secondo luogo, digita nel Ctrl + Ctuo terminale e mostra:

[I 15: 59: 48.407 NotebookApp] interrotto Elaborazione notebook dalla directory locale: / home / Nome utente 0 kernel attivi

Il notebook Jupyter è in esecuzione all'indirizzo: http: // localhost: 8888 /? Token = a572c743dfb73eee28538f9a181bf4d9ad412b19fbb96c82

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

Ultimo passaggio, digita yentro 5 secondi e se mostra:

[C 15: 59: 50.407 NotebookApp] Arresto confermato
[I 15: 59: 50.408 NotebookApp] Arresto dei kernel

Congratulazioni! Chiudi correttamente il tuo jupyter.


2

In realtà, credo che ci sia un modo più pulito che uccidere i processi usando kill o task manager.

Nella Jupyter Notebook Dashboard (l'interfaccia del browser che vedi quando avvii per la prima volta "jupyter notebook"), individua la posizione dei file del notebook che hai chiuso nel browser, ma i cui kernel potrebbero essere ancora in esecuzione.

I file iPython Notebook vengono visualizzati con un'icona a libro, mostrata in verde se ha un kernel in esecuzione, o in grigio se il kernel non è in esecuzione.

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

Questo spegnerà correttamente il kernel associato a quel notebook specifico.


0

Nella sessione del browser puoi anche andare su Kernele quindi fare clic su Restart and Clear Output.


0

Sto copiando e incollando dalla documentazione della guida rapida per notebook Jupyter / IPython, rilasciata il 13 febbraio 2018. http://jupyter-notebook-beginner-guide.readthedocs.io/en/latest/execute.html

1.3.3 Chiudere un notebook: spegnimento del kernel Quando un notebook viene aperto, il suo "motore di calcolo" (chiamato kernel) viene avviato automaticamente. La chiusura della scheda del browser del notebook non spegnerà il kernel, ma il kernel continuerà a funzionare finché non viene esplicitamente chiuso. Per chiudere un kernel, vai al notebook associato e fai clic sul menu File -> Chiudi e interrompi. In alternativa, il dashboard del notebook ha una scheda denominata Running che mostra tutti i notebook in esecuzione (cioè i kernel) e consente di spegnerli (facendo clic su un pulsante Shutdown).

Riepilogo: innanzitutto chiudere e arrestare l'esecuzione dei notebook.

1.3.2 Arrestare l'app Jupyter Notebook La chiusura del browser (o la scheda) non chiuderà l'app Jupyter Notebook. Per spegnerlo completamente è necessario chiudere il terminale associato. Più in dettaglio, l'app Jupyter Notebook è un server che viene visualizzato nel browser con un indirizzo predefinito ( http: // localhost: 8888 ). La chiusura del browser non arresta il server. È possibile riaprire l'indirizzo precedente e verrà visualizzata di nuovo l'app Jupyter Notebook. È possibile eseguire molte copie dell'app Jupyter Notebook e verranno visualizzate a un indirizzo simile (solo il numero dopo ":", che è la porta, aumenterà per ogni nuova copia). Poiché con una singola app Jupyter Notebook è già possibile aprire molti notebook, si sconsiglia di eseguire più copie dell'app Jupyter Notebook.

Riepilogo: secondo, chiudi il terminale da cui hai licenziato Jupyter.


0

Passaggio 1 - Sulla shell basta fare control + z (control + c) Passaggio 2 _ chiudere il browser web

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.