Ich habe angefangen, das IPython Notebook zu verwenden und genieße es. Manchmal schreibe ich fehlerhaften Code, der einen enormen Speicherbedarf erfordert oder eine Endlosschleife hat. Ich finde die Option "Kernel unterbrechen" träge oder unzuverlässig, und manchmal muss ich den Kernel neu starten, wodurch alles im Speicher verloren geht.
Manchmal schreibe ich auch Skripte, die dazu führen, dass OS X nicht mehr über genügend Arbeitsspeicher verfügt, und ich muss einen harten Neustart durchführen. Ich bin nicht 100% sicher, aber wenn ich solche Fehler schon einmal geschrieben und Python im Terminal ausgeführt habe, kann ich normalerweise CTRL+ Cmeine Skripte.
Ich verwende die Anaconda-Distribution von IPython Notebook mit Firefox unter Mac OS X.
quelle
Antworten:
Ich könnte mich irren, aber ich bin mir ziemlich sicher, dass die Schaltfläche "Interrupt-Kernel" nur ein SIGINT-Signal an den Code sendet, den Sie gerade ausführen (diese Idee wird durch Fernandos Kommentar hier unterstützt ) STRG + C würde reichen. Einige Prozesse in Python verarbeiten SIGINTs abrupter als andere.
Wenn Sie dringend etwas stoppen müssen, das in iPython Notebook ausgeführt wird, und iPython Notebook von einem Terminal aus gestartet haben, können Sie in diesem Terminal zweimal STRG + C drücken, um den gesamten iPython Notebook-Server zu unterbrechen. Dadurch wird das iPython Notebook insgesamt gestoppt, was bedeutet, dass es nicht möglich ist, Ihre Arbeit neu zu starten oder zu speichern. Dies ist offensichtlich keine gute Lösung (Sie müssen STRG + C zweimal drücken, da dies eine Sicherheitsfunktion ist, damit die Benutzer dies nicht tun mach es aus Versehen). Im Notfall wird der Vorgang jedoch in der Regel schneller abgebrochen als mit der Schaltfläche "Kernel unterbrechen".
quelle
Kernel
Dropdown-Liste oder über die Seite des Notebook-Servers erfolgen (dieShutdown
Schaltfläche rechts neben dem Namen des betreffenden Notebooks).jupyter-console
? II / control-c funktioniert nicht. Und es gibt keine andere Verknüpfung, um den Kernel neu zu starten.Sie können
I
zweimal drücken, um den Kernel zu unterbrechen.Dies funktioniert nur, wenn Sie sich im Befehlsmodus befinden. Wenn noch nicht aktiviert, drücken Sie Esc, um es zu aktivieren.
quelle
Hier finden Sie Verknüpfungen für das IPython-Notizbuch.
Ctrl-m i
unterbricht den Kernel. (das heißt, der einzige Buchstabe i nachCtrl-m
)Nach dieser Antwort
I
funktioniert auch zweimal.quelle
So fügen Sie Folgendes hinzu: Wenn der Interrupt nicht funktioniert, können Sie den Kernel neu starten.
Gehen Sie zur Kernel-Dropdown-Liste >> Neustart >> Neustart und löschen Sie die Ausgabe. Dies macht normalerweise den Trick. Wenn dies immer noch nicht funktioniert, beenden Sie den Kernel im Terminal (oder Task-Manager) und starten Sie ihn neu.
Interrupt funktioniert nicht bei allen Prozessen. Ich habe besonders dieses Problem mit dem R-Kernel.
quelle
UPDATE : Verwandelte meine Lösung in ein eigenständiges Python-Skript.
Diese Lösung hat mich mehr als einmal gerettet. Hoffentlich finden es andere nützlich. Dieses Python-Skript findet jeden Jupyter-Kernel, der mehr als
cpu_threshold
CPU verwendet, und fordert den Benutzer auf, einenSIGINT
an den Kernel (KeyboardInterrupt) zu senden . Es wird so lange gesendet,SIGINT
bis die CPU-Auslastung des Kernels nach unten gehtcpu_threshold
. Wenn es mehrere sich schlecht verhaltende Kernel gibt, wird der Benutzer aufgefordert, jeden von ihnen zu unterbrechen (geordnet nach der höchsten bis zur niedrigsten CPU-Auslastung). Ein großes Dankeschön geht an gcbeltramini für das Schreiben von Code, um den Namen eines Jupyter-Kernels mithilfe der Jupyter-API zu finden. Dieses Skript wurde unter MACOS mit Python3 getestet und erfordert Jupyter Notebook, Requests, JSON und Psutil.Legen Sie das Skript in Ihr Home-Verzeichnis und die Verwendung sieht folgendermaßen aus:
Skriptcode unten:
quelle