iPython笔记本配置为关闭选项卡时关闭内核

2024-06-16 08:31:34 发布

您现在位置:Python中文网/ 问答频道 /正文

在官方网站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服务器,以便内核与相关选项卡一起被杀死?在


Tags: theisitkernelwillengineitsdown
3条回答

我认为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()只会杀死内核。它不会告诉笔记本的sessionmanager要杀死它。 因此,在终止后,当您重新打开由kernel.kill()(关闭的选项卡或窗口)关闭的同一ipynb文件时,sessionmanager将引发KernelError。在

关于卸载

在GoogleChrome上,卸载事件不会在移动页面上触发。 所以,我认为您还应该钩住beforeunload事件

但是用addEventListener('beforeunload', ...)钩住没有用。 所以我试了window.onbeforeunload =,效果很好。在

你可以用jupyter编写一个扩展 (more about jupyter notebook extensions)。 我在IPython的早期版本中找不到任何关于笔记本扩展的信息。但是,笔记本扩展是可定制的,比custom.js漂亮得多

小心unload。我的chrome 43.0.2357.130在重定向时不运行unload。在

我想为尼古拉的回答写评论,但我没有足够的观点。。。在

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

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

完全适合我!(试用Chrome)

相关问题 更多 >