关闭浏览器选项卡后保持Jupyter笔记本运行

问题描述 投票:33回答:4

我使用Jupyter Notebook进行一系列需要一些时间的实验。某些单元格花费太多时间执行,因此正常情况下我想关闭浏览器选项卡,然后稍后再返回。但是,当我执行内核中断时。

我想有解决方法,但找不到

python-2.7 ipython-notebook jupyter
4个回答
32
投票

最简单的解决方法似乎是built-in cell magic %%capture

%%capture output
# Time-consuming code here

保存,关闭标签,稍后再返回。现在,输出存储在output变量中:

output.show()

这将显示所有临时print结果以及普通或丰富输出单元格。


16
投票

TL; DR:

代码不会在选项卡关闭时停止,但是输出不再能够找到当前的浏览器会话,并且会丢失有关其应如何显示的数据,从而导致它丢弃接收到的所有新输出,直到代码完成为止。选项卡关闭时运行。

长版:

[遗憾的是,此功能尚未实施(11月24日)。如果有解决方法,我也找不到。 (仍在查找,将随新闻更新。)There is a workaround that saves output then reprints it,但如果该笔记本中仍在运行代码,则将不起作用。另一种选择是拥有第二个笔记本,您可以在其中获得输出。

出于同样的原因,我也需要此功能。内核不会关闭或在选项卡关闭时中断。关闭选项卡后,代码不会停止运行。给出的警告是完全正确的,“内核正忙,输出可能会丢失。”

正在运行

import time
a = 0
while a < 100:
    a+=1
    print(a)
    time.sleep(1)

在一个框中,然后关闭选项卡,再次将其打开,然后运行

print(a)

从另一个框将使其挂起,直到100秒完成并且代码完成,然后将打印100。

关闭标签页后,当您返回时,python进程将处于您离开时的状态(最后一次保存完成时)。那是他们的预期行为,并且应该在文档中更清楚地了解它们。运行代码的输出实际上是在重新打开浏览器后发送到浏览器的(丢失了解释这一点的参考文献),因此,像this comment中的代码一样的hacks可以正常工作,因为它可以接收这些代码并将它们放入某个单元格中。 >

输出是一种只能通过端点连接以可访问的方式保存的输出。 They've been working on this for a while (before Jupyter),尽管我在Jupyter存储库(this one references it, but is not it)中找不到当前的错误。

唯一通用的解决方法似乎是找到一台始终可以打开的计算机,并在计算机运行时将其留在页面上,然后进行远程访问或依靠自动保存来在其他位置访问它。这是一个不好的方法,但是很遗憾,这是我现在必须要做的。

相关问题:


2
投票

我也在一段时间内在这个问题上苦苦挣扎。


1
投票

首先安装

© www.soinside.com 2019 - 2024. All rights reserved.