2013-07-10 10 views
52

Ho iniziato a utilizzare il notebook IPython e mi sto divertendo. A volte, scrivo codice buggy che richiede massicci requisiti di memoria o ha un loop infinito. Trovo l'opzione "interrupt kernel" lenta o inaffidabile, e talvolta devo riavviare il kernel, perdendo tutto in memoria.Esiste un equivalente a CTRL + C in Notebook IPython in Firefox per interrompere le celle in esecuzione?

A volte scrivo anche script che causano l'esaurimento della memoria di OS X e devo eseguire un riavvio. Non sono sicuro al 100%, ma quando ho scritto bug come questo prima e ho eseguito Python nel terminale, di solito posso usare CTRL + C i miei script.

Sto usando la distribuzione Anaconda di IPython notebook con Firefox su Mac OS X.

+1

Non sono mai riuscito a interrompere un ciclo infinito tramite il collegamento cntrl + m i o il menu di scelta del kernel> interrupt in 0.13 (predefinito per anaconda su MacOSX). Il problema sembra essere risolto in 1.0. – KLDavenport

risposta

32

potrei sbagliarmi, ma sono abbastanza sicuro che il pulsante "interrupt kernel" solo invia un segnale SIGINT al codice che stai correndo (questa idea è supportata dal commento di Fernando here), che è la stessa cosa che farebbe con CTRL + C. Alcuni processi all'interno di Python gestiscono SIGINT più bruscamente di altri.

Se hai bisogno disperatamente di interrompere qualcosa che è in esecuzione in iPython Notebook e hai avviato iPython Notebook da un terminale, puoi premere CTRL + C due volte su quel terminale per interrompere l'intero server Notebook iPython. Questo bloccherà iPython Notebook tutto insieme, il che significa che non sarà possibile riavviare o salvare il tuo lavoro, quindi questa non è ovviamente un'ottima soluzione (devi premere CTRL + C due volte perché è una funzione di sicurezza in modo che le persone non fallo per caso). In caso di emergenza, tuttavia, in genere uccide il processo più rapidamente rispetto al pulsante "interrupt kernel".

+7

In alternativa, è possibile riavviare o arrestare il kernel offensivo, in modo meno drastico rispetto all'uccisione del server ipython. Questo può essere fatto dal menu a tendina 'Kernel' o dalla pagina del server del notebook (il pulsante' Shutdown' a destra del nome del notebook che si sta macchiando). – drevicko

+1

Sfortunatamente sembra che il browser possa diventare così poco reattivo, che sia difficile raggiungere la pagina del server. –

+0

C'è un modo per interrompere un processo in 'jupyter-console'? II/control-c non funziona. E non c'è altra scorciatoia per riavviare il kernel. –

34

È possibile premere due volte I per interrompere il kernel.

+0

Si tratta di un intervallo di versione specifico di IPython o di un sistema operativo specifico? – Greg

+0

Funziona solo se sei in "modalità fuga". – tmthyjames

1

sono scorciatoie per il Notebook IPython.

Ctrl-m i interrompe il kernel. (ovvero, l'unica lettera i dopo lo Ctrl-m)

In base alla risposta this, anche il numero I funziona due volte.

2

Per aggiungere a quanto sopra: Se l'interruzione non funziona, è possibile riavviare il kernel.

Passare al menu a discesa kernel >> restart >> riavviare e cancellare l'output. Questo di solito fa il trucco. Se ancora non funziona, uccidere il kernel nel terminale (o nel task manager) e quindi riavviare.

L'interrupt non funziona correttamente per tutti i processi. In particolare ho questo problema usando il kernel R.

+0

Questo trucco ha fatto per me: Jupyter Notebook totalmente insensibile a causa del clustering multi-core degli harem di 2 miliardi di voci (che dovevamo sapere prima) – Alex

4

Mentre all'interno del jupyter premere "esc" per accedere alla modalità di fuga. Quindi tocca "i" due volte per interrompere lo script in esecuzione.

Problemi correlati