Wie schließe ich IPython Notebook richtig?

110

Wie schließe ich IPython Notebook richtig?

Derzeit schließe ich einfach die Browser-Registerkarten und verwende sie dann Ctrl+Cim Terminal.
Leider hilft weder exit()noch das Ankreuzen Kill kernel upon exit(sie töten den Kernel, den sie haben, aber verlassen iPython nicht).

Piotr Migdal
quelle
Die PID eines bestimmten Kernels (an einem bestimmten Port geöffnet) kann mit ps -axoder angezeigt werden top. Somit können Kernel selektiv mit [Administratorrechten] gestoppt werden, um diesen bestimmten Prozess zu beenden: # kill PID-of-ki Dies erlaubt keine internen Abschaltprozeduren für den Kernel, aber auch nicht den erzwungenen Ctl-C-Typ .... Weiß jemand Bescheid ob das für jupyter geplant ist?
Dr. C

Antworten:

119

Es gibt derzeit keinen besseren Weg als Strg + C im Terminal.

Wir überlegen, wie Sie explizit herunterfahren können, aber es gibt einige Spannungen zwischen dem Notebook als Einzelbenutzeranwendung, bei der der Benutzer es stoppen kann, und als Mehrbenutzerserver, bei dem nur ein Administrator in der Lage sein sollte um es zu stoppen. Wir haben noch nicht ganz herausgefunden, wie wir mit den Unterschieden umgehen sollen.

(Für zukünftige Leser ist dies die Situation mit 0,12 veröffentlicht und 0,13 in der Entwicklung.)

Update Dezember 2017

Das IPython-Notizbuch wurde zum Jupyter-Notizbuch. In einer neueren Version wurde ein jupyter notebook stopShell-Befehl hinzugefügt, mit dem ein auf diesem System ausgeführter Server heruntergefahren wird. Sie können die Portnummer in der Befehlszeile übergeben, wenn dies nicht der Standardport 8888 ist.

Sie können auch nbmanager verwenden , eine Desktop-Anwendung, mit der laufende Server angezeigt und heruntergefahren werden können.

Schließlich arbeiten wir daran, Folgendes hinzuzufügen:

  • Eine Konfigurationsoption zum automatischen Herunterfahren des Servers, wenn Sie ihn für eine bestimmte Zeit nicht verwenden.
  • Eine Schaltfläche in der Benutzeroberfläche zum Herunterfahren des Servers. (Wir wissen, dass es ein bisschen verrückt ist, dass es so lange gedauert hat. Das Ändern der Benutzeroberfläche ist umstritten.)
Thomas K.
quelle
1
Vielleicht bieten Sie dann einfach eine Option an, um explizites Töten zu ermöglichen (über eine Schaltfläche im Menü?) Oder nicht in der Konfigurationsdatei und der Befehlszeile? Damit Benutzer, die möchten, dass der Server immer ausgeführt wird, einfach die richtige Konfiguration einrichten können.
gaborous
7
Es ist ein paar Jahre her, hat sich diese Situation überhaupt geändert? Ist Strg + C immer noch die einzig sichere Möglichkeit, einen iPython Notebook-Server herunterzufahren?
EFC
Es gibt immer noch keine Möglichkeit, es über die Notebook-Benutzeroberfläche herunterzufahren, aber ich habe nbmanager geschrieben , ein Tool, mit dem Notebook-Server und -Kernelisten aufgelistet und beendet werden können.
Thomas K
Daher nehme ich an, dass die Verwendung jupyter notebook &eine schlechte Idee ist, da Ctrl+ Cfür diese Situation nicht gilt
Naveen Dennis
Ich habe es versucht, aber es gibt keine Möglichkeit, etwas anderes in die Konsole einzugeben, auf dem der Jupyter Notebook-Prozess ausgeführt wird, als Strg + C. Ich habe versucht, eine neue Powershell / Eingabeaufforderung zu öffnen und von dort aus jupyter notebook stop einzugeben, aber es hat nicht funktioniert.
Julianhatwell
24

Wenn Sie wie ich im Hintergrund jupyter laufen lassen:

jupyter notebook &> /dev/null &

Um jupyter dann vollständig zu beenden, geben Sie anstelle von Ctl-C einen Alias-Befehl ein:

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

Starten Sie Ihr Terminal neu. Töte alle Jupyter-Instanzen:

quitjupyter

Hinweis: Verwenden Sie doppelte Anführungszeichen in einfachen Anführungszeichen, wie oben gezeigt. Umgekehrt wird der Ausdruck ausgewertet, bevor er in Ihre .bashrc-Datei geschrieben wird (Sie möchten den Befehl selbst schreiben, nicht 'kill 1430' oder eine andere Prozessnummer, die einer aktuellen Jupyter-Instanz zugeordnet sein kann). Natürlich können Sie jeden gewünschten Alias ​​verwenden. Ich benutze eigentlich 'qjup':

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

Starten Sie Ihr Terminal neu. Töte alle Jupyter-Instanzen:

qjup
BBW vor Windows
quelle
Das kill $(pgrep jupyter)an sich ist ausgezeichnet. Ich lief jupyter notebookvon einem Remote-Terminal aus, das abgestürzt ist. Beim erneuten Anmelden ist dann kein STRG + C-Ansatz mehr möglich. Das Speichern der nuklearen Option zum Neustarten des Remote-Terminals ist großartig.
MichaelChirico
2
Warum nicht einfach pkill jupyter? pkillist pgreb, aber für Tötungsprozesse.
rmstmppr
21

Ich denke, akzeptierte Antwort veraltet und ist nicht mehr gültig.

Sie können das Jupiter-Notizbuch über die Weboberfläche auf dem Menüpunkt Datei beenden.

Geben Sie hier die Bildbeschreibung ein

Wenn Sie den Mauszeiger auf "Schließen und Anhalten" bewegen, wird die folgende Erklärung angezeigt.

Geben Sie hier die Bildbeschreibung ein

Wenn Sie auf "Schließen und Anhalten" klicken, wird auf dem Terminalbildschirm die folgende Meldung angezeigt.

Geben Sie hier die Bildbeschreibung ein

Wasabi
quelle
15
Zur Verdeutlichung stoppt dies den Kernel , den Prozess, der Ihren Python-Code ausführt. Es stoppt nicht den Notebook-Server , der die Notebook-Schnittstellen herstellt, sich mit dem Laden und Speichern von Dateien usw. befasst
Thomas K
10

Der erste Schritt besteht darin, alle geöffneten Notizbücher zu speichern. Und dann denken Sie daran, Ihr laufendes Jupyter-Notebook herunterzufahren. Sie können diesen einfachen Befehl verwenden:

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

Dabei wird auch die Portnummer als Argument verwendet, und Sie können das Jupyter-Notebook ordnungsgemäß herunterfahren.

Zum Beispiel:

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

Überprüfen Sie außerdem den folgenden Befehl, um zu erfahren, ob Ihre aktuelle Juypter-Instanz ausgeführt wird:

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

Diese Befehle haben bei mir funktioniert:

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.

Diese Antwort wurde von hier aus angepasst .

PatriceG
quelle
5

Versuchen Sie, den Pythonw-Prozess im Task-Manager (unter Windows) zu beenden, wenn nichts anderes funktioniert.

fixxxer
quelle
4
Linux (Ubuntu 14.04)

Wie bereits erwähnt, versuchen Sie, ipython-Notebook-Prozesse ordnungsgemäß zu beenden, indem Sie zuerst in Ihrer ipynb / jupyter-Browsersitzung auf die Registerkarte "Ausführen" gehen, dann die offenen Terminals auf Ihrer Konsole überprüfen und mit Strg-C herunterfahren. Letzteres sollte nach Möglichkeit vermieden werden.

Wenn Sie einen ausführen ipython notebook listund weiterhin sehen, dass Ipython-Server an verschiedenen Ports ausgeführt werden, notieren Sie sich, an welchen Ports die vorhandenen Notebooks bedient werden. Fahren Sie dann Ihre TCP-Ports herunter:

fuser -k 'port#'/tcp 

Ich bin mir nicht sicher, ob damit andere Risiken verbunden sind. Wenn ja, lass es mich wissen.

Soham
quelle
2

Umgebung


Mein Betriebssystem ist Ubuntu 16.04 und Jupyter ist 4.3.0.

Methode


Zuerst habe ich mich bei jupyter auf seiner Homepage im Browser abgemeldet (die Abmeldeschaltfläche befindet sich oben rechts).

Zweitens geben Sie Ctrl + CIhr Terminal ein und es zeigt:

[I 15: 59: 48.407 NotebookApp] unterbrochen Servieren von Notebooks aus dem lokalen Verzeichnis: / home / Benutzername 0 aktive Kernel

Das Jupyter-Notizbuch wird ausgeführt unter: http: // localhost: 8888 /? Token = a572c743dfb73eee28538f9a181bf4d9ad412b19fbb96c82

Diesen Notebook-Server herunterfahren (j / [n])?

Letzter Schritt, geben Sie yinnerhalb von 5 Sekunden ein und wenn es zeigt:

[C 15: 59: 50.407 NotebookApp] Herunterfahren bestätigt
[I 15: 59: 50.408 NotebookApp] Kernel herunterfahren

Glückwunsch! Sie schließen Ihren Jupiter erfolgreich.

WY Hsu
quelle
2

Eigentlich glaube ich, dass es einen saubereren Weg gibt, als die Prozesse mit Kill oder Task-Manager zu beenden.

Navigieren Sie im Jupyter Notebook Dashboard (der Browser-Oberfläche, die Sie beim ersten Start von 'jupyter notebook' sehen) zum Speicherort der Notebook-Dateien, die Sie im Browser geschlossen haben, deren Kernel jedoch möglicherweise noch ausgeführt werden.

iPython Notebook-Dateien werden mit einem Buchsymbol angezeigt, das grün angezeigt wird, wenn ein Kernel ausgeführt wird, oder grau, wenn der Kernel nicht ausgeführt wird.

Aktivieren Sie einfach das Kontrollkästchen neben der laufenden Datei und klicken Sie auf die Schaltfläche Herunterfahren, die darüber angezeigt wird.

Dadurch wird der mit diesem bestimmten Notebook verknüpfte Kernel ordnungsgemäß heruntergefahren.

Andrew Medlin
quelle
0

In der Browsersitzung können Sie auch zu gehen Kernelund dann auf klicken Restart and Clear Output.

Susanna Maier
quelle
0

Ich kopiere aus der Jupyter / IPython Notebook-Kurzanleitung, die am 13. Februar 2018 veröffentlicht wurde. Http://jupyter-notebook-beginner-guide.readthedocs.io/en/latest/execute.html

1.3.3 Schließen eines Notebooks: Herunterfahren des Kernels Wenn ein Notebook geöffnet wird, wird automatisch seine „Rechenmaschine“ (als Kernel bezeichnet) gestartet. Durch Schließen der Registerkarte "Notebook-Browser" wird der Kernel nicht heruntergefahren, sondern der Kernel wird so lange ausgeführt, bis er explizit heruntergefahren wird. Um einen Kernel herunterzufahren, gehen Sie zum zugehörigen Notizbuch und klicken Sie auf das Menü Datei -> Schließen und Anhalten. Alternativ verfügt das Notebook-Dashboard über eine Registerkarte mit dem Namen Running, auf der alle laufenden Notebooks (dh Kernel) angezeigt und heruntergefahren werden können (durch Klicken auf eine Schaltfläche zum Herunterfahren).

Zusammenfassung: Schließen und stoppen Sie zuerst die laufenden Notebooks.

1.3.2 Herunterfahren der Jupyter Notebook App Durch Schließen des Browsers (oder der Registerkarte) wird die Jupyter Notebook App nicht geschlossen. Um es vollständig herunterzufahren, müssen Sie das zugehörige Terminal schließen. Im Einzelnen ist die Jupyter Notebook App ein Server, der in Ihrem Browser unter einer Standardadresse ( http: // localhost: 8888 ) angezeigt wird . Durch Schließen des Browsers wird der Server nicht heruntergefahren. Sie können die vorherige Adresse erneut öffnen und die Jupyter Notebook App wird erneut angezeigt. Sie können viele Kopien der Jupyter Notebook-App ausführen, die an einer ähnlichen Adresse angezeigt werden (nur die Nummer nach ":", dem Port, wird für jede neue Kopie erhöht). Da Sie mit einer einzelnen Jupyter Notebook App bereits viele Notebooks öffnen können, empfehlen wir nicht, mehrere Kopien der Jupyter Notebook App auszuführen.

Zusammenfassung: Beenden Sie zweitens das Terminal, von dem aus Sie Jupyter abgefeuert haben.

Subhrajit Bhattacharya
quelle
0

Schritt 1 - Führen Sie auf der Shell einfach Strg + Z (Strg + C) aus. Schritt 2 _ Schließen Sie den Webbrowser

Reihan_amn
quelle