从papermill生成的笔记本能否输出实时运行的内核?

时间:2019-04-02 03:37:23

标签: jupyter-notebook jupyter papermill

当papermill生成笔记本时,将在输出路径中创建一个.ipynb文件,该文件未在jupyter主页中运行。我希望笔记本完成执行后,仍保持运行中的实时内核运行,因此我可以与其中的任何变量进行交互。相反,现在我必须重新运行单元格以获取笔记本中生成的变量。对于任何时间密集型笔记本电脑来说,这尤其麻烦。

我正在使用execute_notebook函数生成笔记本。

我的感觉是这是不可能的,因为在执行新笔记本时,它永远不会在jupyter主页上显示“正在运行”。我所要求的甚至可以通过造纸厂实现,还是有另一种方法可以实现可扩展?

3 个答案:

答案 0 :(得分:0)

保持内核运行确实很有用,而且我在Papermill documentation中也找不到对此的支持。

看来内核可能无法以任何用户界面(例如,您可以浏览到的任何本地端口)运行,因此即使在执行后内核仍在运行,您也将无法与其交互。

>

但是,您似乎不需要重新运行已保存的笔记本中的任何内容即可恢复已计算出的变量,因为您可以简单地使用papermill.read_notebook,不是吗?

答案 1 :(得分:0)

您可以通过遵循extending papermill docs来实现一个自定义引擎来实现此目的,该引擎链接到实时内核,或者将内核保留在执行后。这将需要一些自定义代码,以避免nbconvert停止内核和/或将目标内核传递到papermill的execute函数中。可能,但不是开箱即用。

答案 2 :(得分:0)

据我所知,有几种选择。 Papermill过去已允许使用papermill.record()在笔记本中记录变量,但已弃用;我相信您可以获取较旧的版本并仍然使用它。

他们建议的另一个选择是使用剪贴簿。您可以找到有关here的更多信息。

您还可以使用%store魔术: Share data between IPython Notebooks

最后,您可以使用python的上下文管理器功能简单地写入平面文件:

with open('<dir>', 'w') as file:
    file.write(<var_of_choice>)

import json    
with open(<out_path>, "a+") as file:
    json.dump(<var_of_choice>, file)

如果您的笔记本加载大量数据,则可能使内核无法运行。