我使用Jupyter Notebook进行一系列需要一些时间的实验。某些单元格花费太多时间执行,因此正常情况下我想关闭浏览器选项卡,然后稍后再返回。但是,当我执行内核中断时。
我想有解决方法,但找不到
最简单的解决方法似乎是built-in cell magic %%capture
:
%%capture output
# Time-consuming code here
保存,关闭标签,稍后再返回。现在,输出存储在output
变量中:
output.show()
这将显示所有临时print
结果以及普通或丰富输出单元格。
代码不会在选项卡关闭时停止,但是输出不再能够找到当前的浏览器会话,并且会丢失有关其应如何显示的数据,从而导致它丢弃接收到的所有新输出,直到代码完成为止。选项卡关闭时运行。
[遗憾的是,此功能尚未实施(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)中找不到当前的错误。
唯一通用的解决方法似乎是找到一台始终可以打开的计算机,并在计算机运行时将其留在页面上,然后进行远程访问或依靠自动保存来在其他位置访问它。这是一个不好的方法,但是很遗憾,这是我现在必须要做的。
相关问题:
我也在一段时间内在这个问题上苦苦挣扎。
首先安装