Réinitialiser le noyau ipython
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
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
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.
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.
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()