Réinitialiser le noyau ipython

je me demandais s'il y avait un moyen de redémarrer le noyau ipython sans le fermer, comme la fonction de redémarrage du noyau qui existe dans le bloc-notes. J'ai essayé %reset mais cela ne semble pas effacer les importations.

29
demandé sur Eric 2014-10-28 11:07:09

6 réponses

même si ce serait pratique si %reset nettoierait l'espace de noms et le cache pour les importations (comme dans le notebook) on peut explicitement recharger un module importé précédemment en utilisant importlib.reload en python3.4 ou

9
répondu greole 2016-02-22 13:05:42

je pourrais redémarrer le noyau, mais certaines sessions de la console prennent plus de temps à se reconnecter. Ordinateur détecte noyau redémarrer instantanément.

ipykernel.ipkernel.IPythonKernel la classe a un do_shutdown méthode restart paramètre par défaut à False.

Obtenir une référence à ipykernel.kernelapp.IPKernelApp qui a une référence au noyau et appelle do_shutdown du noyau en passant True.

import IPython
app = IPython.Application.instance()
app.kernel.do_shutdown(True)  

Comment ai-je testé?

$ #start notebook
$ jupyter notebook

$ #connect to existing kernel
$ jupyter console --existing
3
répondu Nizam Mohamed 2016-02-23 05:39:34

dans la console qt vous pouvez frapper ctrl-

1
répondu Seekheart 2016-02-23 00:19:18

si vous avez installé Spyder avec anaconda, ouvrez la fenêtre Spyder.

puis Consoles (barre de menu) -> redémarrez les Consoles.

ou vous pouvez utiliser CTRL+. qui est une touche de raccourci pour redémarrer la console.

1
répondu Jayesh Baviskar 2018-08-02 03:37:44

IPython Qt-console a une fonctionnalité de réinitialisation du noyau. Vous pouvez l'utiliser si vous utilisez IPython Qt. IMO il est mieux que d'utiliser de la coquille.

enter image description here

0
répondu gokul_uf 2016-02-25 07:29:58

à partir de https://github.com/jupyter/notebook/blob/f19d68a33193dff07e62f11da0ebce331e8acbda/notebook/services/kernels/handlers.py#L75:

class KernelActionHandler(APIHandler):

    @web.authenticated
    @json_errors
    @gen.coroutine
    def post(self, kernel_id, action):
        km = self.kernel_manager
        if action == 'interrupt':
            km.interrupt_kernel(kernel_id)
            self.set_status(204)
        if action == 'restart':

            try:
                yield gen.maybe_future(km.restart_kernel(kernel_id))
            except Exception as e:
                self.log.error("Exception restarting kernel", exc_info=True)
                self.set_status(500)
            else:
                model = km.kernel_model(kernel_id)
                self.write(json.dumps(model))
        self.finish()
-4
répondu knite 2016-02-19 07:22:05