iPython notebook - 配置为在关闭选项卡时关闭内核

iPython notebook - configuring to shut down the kernel on closing the tab

官方网站it is said:

When a notebook is opened, its “computational engine” (called the kernel) is automatically started. Closing the notebook browser tab, will not shut down the kernel, instead the kernel will keep running until is explicitly shut down."

是否可以配置 iPython 服务器以便内核与关联的选项卡一起被杀死?

经过一些研究和多次尝试,解决方案非常简单。在文件末尾添加 profile/static/custom/custom.js 以下代码:

$( window ).unload(function() {
  IPython.notebook.kernel.kill();
});

非常适合我! (试过 Chrome)

你可以在jupyter中写一个扩展 (more about jupyter notebook extensions)。 我在 IPython 的早期版本中找不到有关笔记本扩展的任何信息。但是,Notebook 扩展是可自定义的,并且比 custom.js

漂亮得多

小心unload。我的 chrome 43.0.2357.130 没有 运行 unload 重定向。

我想为 Nikolay 的回答写评论,但我没有足够的积分...

我认为 IPython.notebook.session.delete()IPython.notebook.kernel.kill() 好。

window.addEventListener('unload', function() {
    // For Firefox
    IPython.notebook.session.delete();
});

window.onbeforeunload = function () {
    // For Chrome
    IPython.notebook.session.delete();
};

原因

因为kernel.kill() 只会杀死内核。它不会告诉笔记本的会话管理器关于杀死它。 因此,在杀死之后,当您重新打开由 kernel.kill()(关闭的选项卡或 windows)关闭的同一个 ipynb 文件时,sessionmanager 将引发 KernelError

关于卸载

在 GoogleChrome 上,不会在移动页面上触发卸载事件。 所以,我认为你也应该 hook beforeunload event

但是 addEventListener('beforeunload', ...) 挂钩没有用。 所以我尝试了 window.onbeforeunload =,它工作正常。