Comment fermer correctement le notebook IPython?

110

Comment fermer correctement le notebook IPython?

Actuellement, je ferme simplement les onglets du navigateur, puis je les utilise Ctrl+Cdans le terminal.
Malheureusement, ni exit()ni cocher Kill kernel upon exitn'aide (ils tuent le noyau mais ne quittent pas l'iPython).

Piotr Migdal
la source
Le PID d'un noyau particulier (ouvert sur un port particulier) peut être vu avec ps -axou top. Ainsi, les noyaux peuvent être sélectivement arrêtés avec [privilège administratif] pour terminer ce processus particulier: # kill PID-of-ki Cela n'autorise aucune procédure d'arrêt interne pour le noyau, mais le type Ctl-C forcé non plus ... si cela est prévu pour Jupyter?
Dr C

Réponses:

119

Il n'y a actuellement pas de meilleur moyen de le faire que Ctrl + C dans le terminal.

Nous réfléchissons à la façon de procéder à un arrêt explicite, mais il y a une certaine tension entre le notebook en tant qu'application mono-utilisateur, où l'utilisateur est libre de l'arrêter, et en tant que serveur multi-utilisateur, où seul un administrateur devrait pouvoir pour l'arrêter. Nous n'avons pas encore tout à fait compris comment gérer les différences.

(Pour les futurs lecteurs, c'est la situation avec 0.12 publié et 0.13 en développement.)

Mise à jour décembre 2017

Le notebook IPython est devenu le notebook Jupyter. Une version récente a ajouté une jupyter notebook stopcommande shell qui arrêtera un serveur fonctionnant sur ce système. Vous pouvez transmettre le numéro de port sur la ligne de commande s'il ne s'agit pas du port par défaut 8888.

Vous pouvez également utiliser nbmanager , une application de bureau qui peut afficher les serveurs en cours d'exécution et les arrêter.

Enfin, nous travaillons à l'ajout:

  • Une option de configuration pour arrêter automatiquement le serveur si vous ne l'utilisez pas pendant une durée spécifiée.
  • Un bouton dans l'interface utilisateur pour arrêter le serveur. (Nous savons que c'est un peu fou que cela ait pris autant de temps. Changer l'interface utilisateur est controversé.)
Thomas K
la source
1
Peut-être alors simplement offrir une option pour permettre un kill explicite (via un bouton dans le menu?) Ou pas dans le fichier de configuration et la ligne de commande? Pour que les personnes qui souhaitent que le serveur fonctionne toujours puissent simplement configurer la configuration correcte.
gaborous
7
Cela fait quelques années, cette situation a-t-elle changé du tout? Ctrl + C est-il toujours le seul moyen sûr d'arrêter un serveur iPython Notebook?
EFC
Il n'y a toujours pas de moyen de l'éteindre depuis l'interface utilisateur du notebook, mais j'ai écrit nbmanager , un outil qui peut répertorier et tuer les serveurs et les noyaux de notebook.
Thomas K
Je suppose donc que l'utilisation jupyter notebook &est une mauvaise idée car Ctrl+ Cne s'applique pas à cette situation
Naveen Dennis
J'ai essayé cela, mais il n'y a aucun moyen de taper quoi que ce soit dans la console qui exécute le processus Jupyter Notebook autre que ctrl + C. J'ai essayé d'ouvrir une nouvelle invite de commande PowerShell / et de taper jupyter notebook stop à partir de là, mais cela n'a pas fonctionné.
julianhatwell
24

Si vous exécutez jupyter en arrière-plan comme moi:

jupyter notebook &> /dev/null &

Ensuite, pour quitter complètement jupyter, au lieu de Ctl-C, faites une commande d'alias:

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

Redémarrez votre terminal. Tuez toutes les instances de jupyter:

quitjupyter

Remarque: utilisez des guillemets doubles à l'intérieur des guillemets simples comme indiqué ci-dessus. L'inverse évaluera l'expression avant de l'écrire dans votre .bashrc (vous voulez écrire la commande elle-même et non «kill 1430» ou tout autre numéro de processus associé à une instance jupyter actuelle). Bien sûr, vous pouvez utiliser n'importe quel alias que vous souhaitez. J'utilise en fait 'qjup':

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

Redémarrez votre terminal. Tuez toutes les instances de jupyter:

qjup
BBW avant Windows
la source
Le kill $(pgrep jupyter)en soi est excellent. Je courais à jupyter notebookpartir d'un terminal distant qui s'est écrasé - L'approche CTRL + C est alors impossible lors de la reconnexion. Sauvegarde de l'option nucléaire de redémarrage à distance, c'est génial.
MichaelChirico
2
Pourquoi pas juste pkill jupyter? pkillest pgreb, mais pour tuer les processus.
rmstmppr
21

Je pense que la réponse acceptée est dépassée et n'est plus valide.

Vous pouvez terminer le notebook jupyter à partir de l'interface Web sur l'élément de menu de fichier.

entrez la description de l'image ici

Lorsque vous déplacez le curseur de la souris sur "fermer et arrêter", vous verrez l'explication suivante.

entrez la description de l'image ici

Et lorsque vous cliquez sur "fermer et arrêter", vous verrez le message suivant sur l'écran du terminal.

entrez la description de l'image ici

wasabi
la source
15
Pour clarifier, cela arrête le noyau , le processus qui exécute votre code Python. Cela n'arrête pas le serveur de notebook , qui fait les interfaces du notebook, s'occupe du chargement et de l'enregistrement des fichiers, etc.
Thomas K
10

La première étape consiste à enregistrer tous les blocs-notes ouverts. Et puis pensez à arrêter votre Jupyter Notebook en cours d'exécution. Vous pouvez utiliser cette commande simple:

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

Ce qui prend également le numéro de port comme argument et vous pouvez arrêter le notebook jupyter gracieusement.

Par exemple:

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

De plus pour connaître votre instance actuelle de juypter en cours d'exécution, vérifiez la commande ci-dessous:

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

Ces commandes ont fonctionné pour moi:

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.

Cette réponse a été adaptée d' ici .

PatriceG
la source
5

Essayez de tuer le processus pythonw à partir du Gestionnaire des tâches (si Windows) si rien d'autre ne fonctionne.

fixxxer
la source
4
Linux (Ubuntu 14.04)

Comme mentionné, essayez de tuer correctement les processus de notebook ipython en allant d'abord dans l'onglet "running" de votre session de navigateur ipynb / jupyter, puis vérifiez les terminaux ouverts sur votre console et arrêtez avec ctrl-c. Ce dernier doit être évité si possible.

Si vous exécutez ipython notebook listet continuez de voir des serveurs ipython en cours d'exécution sur différents ports, notez les ports sur lesquels les blocs-notes existants sont servis. Puis fermez vos ports TCP:

fuser -k 'port#'/tcp 

Je ne sais pas si cela comporte d'autres risques. Si oui, faites-le moi savoir.

Soham
la source
2

Environnement


Mon système d'exploitation est Ubuntu 16.04 et jupyter est 4.3.0.

Méthode


Tout d'abord, je me suis déconnecté de jupyter sur sa page d'accueil sur le navigateur (le bouton de déconnexion est en haut à droite)

Deuxièmement, tapez dans Ctrl + Cvotre terminal et il montre:

[I 15: 59: 48.407 NotebookApp] Interruption du service des blocs-notes à partir du répertoire local: / home / Username 0 noyaux actifs

Le bloc-notes Jupyter fonctionne à l' adresse : http: // localhost: 8888 /? Token = a572c743dfb73eee28538f9a181bf4d9ad412b19fbb96c82

Arrêter ce serveur notebook (o / [n])?

Dernière étape, tapez ydans les 5 secondes, et si cela indique:

[C 15: 59: 50.407 NotebookApp] Arrêt confirmé
[I 15: 59: 50.408 NotebookApp] Arrêt des noyaux

Félicitations! Vous fermez votre jupyter avec succès.

WY Hsu
la source
2

En fait, je pense qu'il existe un moyen plus propre que de tuer le ou les processus en utilisant kill ou task manager.

Dans le tableau de bord Jupyter Notebook (l'interface du navigateur que vous voyez lorsque vous lancez 'jupyter notebook' pour la première fois), accédez à l'emplacement des fichiers de notebook que vous avez fermés dans le navigateur, mais dont les noyaux sont peut-être toujours en cours d'exécution.

Les fichiers iPython Notebook s'affichent avec une icône de livre, affichée en vert si le noyau est en cours d'exécution, ou en gris si le noyau n'est pas en cours d'exécution.

Cochez simplement la case à côté du fichier en cours d'exécution, puis cliquez sur le bouton Arrêter qui apparaît au-dessus.

Cela arrêtera correctement le noyau associé à ce notebook spécifique.

Andrew Medlin
la source
0

Dans la session du navigateur, vous pouvez également accéder à Kernelpuis cliquer sur Restart and Clear Output.

Susanna Maier
la source
0

Je copie-coller de la documentation du Guide de démarrage rapide Jupyter / IPython Notebook, publiée le 13 février 2018. http://jupyter-notebook-beginner-guide.readthedocs.io/en/latest/execute.html

1.3.3 Fermer un notebook: arrêt du noyau Lorsqu'un notebook est ouvert, son «moteur de calcul» (appelé noyau) démarre automatiquement. La fermeture de l'onglet du navigateur du notebook ne fermera pas le noyau, mais le noyau continuera à fonctionner jusqu'à ce qu'il soit explicitement arrêté. Pour arrêter un noyau, allez dans le notebook associé et cliquez sur le menu Fichier -> Fermer et arrêter. Alternativement, le tableau de bord du notebook a un onglet nommé Running qui affiche tous les notebooks en cours d'exécution (ie les noyaux) et permet de les arrêter (en cliquant sur un bouton Shutdown).

Résumé: Fermez et arrêtez d'abord les blocs-notes en cours d'exécution.

1.3.2 Arrêter l'application Jupyter Notebook La fermeture du navigateur (ou de l'onglet) ne fermera pas l'application Jupyter Notebook. Pour l'arrêter complètement, vous devez fermer le terminal associé. Plus en détail, l'application Jupyter Notebook est un serveur qui apparaît dans votre navigateur à une adresse par défaut ( http: // localhost: 8888 ). La fermeture du navigateur n'arrêtera pas le serveur. Vous pouvez rouvrir l'adresse précédente et l'application Jupyter Notebook s'affichera à nouveau. Vous pouvez exécuter de nombreuses copies de l'application Jupyter Notebook et elles s'afficheront à une adresse similaire (seul le numéro après «:», qui est le port, s'incrémentera à chaque nouvelle copie). Étant donné qu'avec une seule application Jupyter Notebook, vous pouvez déjà ouvrir de nombreux blocs-notes, nous vous déconseillons d'exécuter plusieurs copies de l'application Jupyter Notebook.

Résumé: Deuxièmement, quittez le terminal à partir duquel vous avez tiré Jupyter.

Subhrajit Bhattacharya
la source
0

Étape 1 - Sur le shell, faites simplement contrôle + z (contrôle + c) Étape 2 _ fermez le navigateur Web

Reihan_amn
la source