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

时间:2015-09-28 13:40:35

标签: python ipython-notebook

在官方网站it is said上:

  

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

是否可以配置iPython服务器以便内核与相关选项卡一起被终止?

3 个答案:

答案 0 :(得分:6)

After some research and numerous tries the solution is extremely simple. Add at the end of the file profile/static/custom/custom.js the following code:

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

Works for me perfectly! (tried on Chrome)

答案 1 :(得分:2)

您可以在jupyter中编写扩展程序 (more about jupyter notebook extensions)。 我无法在早期版本的IPython中找到有关笔记本扩展的任何信息。但是,Notebook扩展程序可以自定义,比cf set-env boldStartApp JBP_CONFIG_IBMJDK "version: 1.8.+" cf set-env fournHubApp JVM 'openjdk' cf set-env fournHubApp JBP_CONFIG_OPENJDK "version: 1.8.+" cf restage boldStartApp cf restage fournHubApp

更漂亮

小心custom.js。我的chrome 43.0.2357.130在重定向时没有运行unload

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

答案 2 :(得分:2)

我认为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()会杀死内核。它不会告诉笔记本的会员管理员杀死它。 因此,当您重新打开由KernelError关闭的相同ipynb文件(关闭的标签页或窗口)时,sessionmanager会在被查杀后提升kernel.kill()

关于卸载

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

但是addEventListener('beforeunload', ...)挂钩并不起作用。 所以我尝试了window.onbeforeunload =,它运行正常。