J'ai commencé à utiliser le notebook IPython et je l'apprécie. Parfois, j'écris du code bogué qui nécessite énormément de mémoire ou qui a une boucle infinie. Je trouve l'option "interrompre le noyau" lente ou peu fiable, et parfois je dois redémarrer le noyau, perdant tout en mémoire.
J'écris aussi parfois des scripts qui font que OS X manque de mémoire et je dois faire un redémarrage dur. Je ne suis pas sûr à 100%, mais quand j'ai écrit des bogues comme celui-ci avant et exécuté Python dans le terminal, je peux généralement CTRL+ Cmes scripts.
J'utilise la distribution Anaconda du notebook IPython avec Firefox sur Mac OS X.
python
ipython
jupyter-notebook
wwwilliam
la source
la source
Réponses:
Je peux me tromper, mais je suis presque sûr que le bouton "interrompre le noyau" envoie simplement un signal SIGINT au code que vous utilisez actuellement (cette idée est soutenue par le commentaire de Fernando ici ), ce qui est la même chose que frapper CTRL + C ferait l'affaire. Certains processus au sein de python gèrent les SIGINT plus brusquement que d'autres.
Si vous avez désespérément besoin d'arrêter quelque chose qui s'exécute dans iPython Notebook et que vous avez démarré iPython Notebook à partir d'un terminal, vous pouvez appuyer deux fois sur CTRL + C dans ce terminal pour interrompre l'ensemble du serveur iPython Notebook. Cela arrêtera complètement iPython Notebook, ce qui signifie qu'il ne sera pas possible de redémarrer ou d'enregistrer votre travail, donc ce n'est évidemment pas une excellente solution (vous devez appuyer deux fois sur CTRL + C car c'est une fonction de sécurité pour que les gens ne le fassent pas) faites-le par accident). En cas d'urgence, cependant, il tue généralement le processus plus rapidement que le bouton "interrompre le noyau".
la source
Kernel
menu déroulant ou de la page du serveur de notebook (leShutdown
bouton à droite du nom du notebook incriminé).jupyter-console
? II / control-c ne fonctionne pas. Et il n'y a pas d'autre raccourci pour redémarrer le noyau.Vous pouvez appuyer sur
I
deux fois pour interrompre le noyau.Cela ne fonctionne que si vous êtes en mode Commande. S'il n'est pas déjà activé, appuyez sur Escpour l'activer.
la source
Voici des raccourcis pour le bloc-notes IPython.
Ctrl-m i
interrompt le noyau. (c'est-à-dire la seule lettre i aprèsCtrl-m
)Selon cette réponse,
I
deux fois fonctionne aussi.la source
Pour ajouter à ce qui précède: Si l'interruption ne fonctionne pas, vous pouvez redémarrer le noyau.
Accédez à la liste déroulante du noyau >> redémarrer >> redémarrer et effacer la sortie. Cela fait généralement l'affaire. Si cela ne fonctionne toujours pas, tuez le noyau dans le terminal (ou le gestionnaire de tâches) puis redémarrez.
L'interruption ne fonctionne pas bien pour tous les processus. J'ai surtout ce problème en utilisant le noyau R.
la source
METTRE À JOUR : J'ai transformé ma solution en un script python autonome.
Cette solution m'a sauvé plus d'une fois. J'espère que d'autres le trouveront utile. Ce script python trouvera n'importe quel noyau jupyter utilisant plus que le
cpu_threshold
processeur et invite l'utilisateur à envoyer unSIGINT
au noyau (KeyboardInterrupt). Il continuera à envoyerSIGINT
jusqu'à ce que l'utilisation du processeur par le noyau soit inférieurecpu_threshold
. S'il y a plusieurs noyaux qui se comportent mal, cela demandera à l'utilisateur d'interrompre chacun d'eux (triés par l'utilisation du processeur la plus élevée au plus bas). Un grand merci à gcbeltramini pour avoir écrit du code pour trouver le nom d'un noyau jupyter en utilisant l'API jupyter. Ce script a été testé sur MACOS avec python3 et nécessite jupyter notebook, requests, json et psutil.Mettez le script dans votre répertoire personnel et son utilisation ressemble à ceci:
Code de script ci-dessous:
la source