重置IPython内核

45 投票
7 回答
92334 浏览
提问于 2025-04-30 02:43

我在想有没有办法在不关闭的情况下重启ipython内核,就像在笔记本里有的内核重启功能一样。我试过用%reset,但是好像并不能清除已经导入的库。

暂无标签

7 个回答

1

在qt控制台里,你可以按下 ctrl- 组合键。

3

我个人在每个JupyterLab的ipynb文件顶部加上这两行:

load_ext autoreload
%autoreload 2

这样你就可以更新旁边的xxx.py文件里的代码,而不需要重启内核,这对我来说真是个大麻烦。

5

如果你是通过Anaconda安装了Spyder,那么就打开Spyder的窗口。

接着在菜单栏找到“控制台”,然后选择“重启控制台”。

或者你也可以直接按CTRL + .这个快捷键来重启控制台。

7

我可以重启内核,但有些控制台会话重新连接需要花费更长的时间。笔记本会立即检测到内核重启。

ipykernel.ipkernel.IPythonKernel 类里面有一个叫 do_shutdown 的方法,它有一个默认值为 Falserestart 参数。

你需要获取一个 ipykernel.kernelapp.IPKernelApp 的引用,它里面有对内核的引用,然后通过传入 True 来调用内核的 do_shutdown 方法。

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

我怎么测试的呢?

$ #start notebook
$ jupyter notebook

$ #connect to existing kernel
$ jupyter console --existing
15

虽然如果 %reset 能够清除命名空间和导入的缓存会很方便(就像在笔记本中那样),但在 Python 3.4 版本中,你可以使用 importlib.reload 来显式地重新加载之前导入的模块。在 Python 3.0 到 3.3 版本中,你可以使用 imp.reload。如果需要的话,还可以在第二步重置内核。

撰写回答