重置IPython内核
我在想有没有办法在不关闭的情况下重启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
的方法,它有一个默认值为 False
的 restart
参数。
你需要获取一个 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
。如果需要的话,还可以在第二步重置内核。