IPython的笔记本 - 配置关闭内核上关闭标签

问题描述:

在官方网站上it is saidIPython的笔记本 - 配置关闭内核上关闭标签

当笔记本打开时,它的“计算引擎”(称为内核)会自动启动。关闭笔记本浏览器选项卡,不会关闭内核,而是内核将继续运行直到明确关闭。“

是否可以配置iPython服务器,以便内核与关联标签

+1

有些javascript会这样做,但它会是['onunload'](http://*.com/questions/3888902/javascript-detect-browser-close-tab-close-browser)事件,所以它如果您按照链接或使用后退按钮,也会触发。 –

+1

如何将额外的HTML代码插入笔记本模板?什么是精确杀死当前内核的API?我大概可以从JavaScript控制台推演它。 –

+1

用户可以在'profile/static/custom/custom.js'文件中添加任何javascript。将尝试与此。 –

一些研究和无数次尝试该解决方案是非常简单的后添加在文件profile/static/custom/custom.js下面的代码的末尾:?!

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

对我的作品完美(试过在Chrome)

您可以在jupyter (more about jupyter notebook extensions)中写入扩展名。 我在早期版本的IPython中找不到有关笔记本扩展的任何信息。然而,笔记本扩展可定制并且比custom.js

要漂亮得多unload要小心。我的Chrome 43.0.2357.130在重定向时不运行unload

我想写尼古拉答案评论,但我没有足够的积分...

我觉得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文件(关闭标签或窗口)时提升KernelError

关于卸载

在GoogleChrome,卸载事件将不会在移动网页被解雇。 所以,我认为你也应该钩beforeunload事件

但挂钩addEventListener('beforeunload', ...)没有奏效。 所以我试过window.onbeforeunload =,它工作正常。