【问题标题】:jupyter notebook: how to stop cell execution programmatically while continuing running subsequent cellsjupyter notebook:如何在继续运行后续单元的同时以编程方式停止单元执行
【发布时间】:2020-03-05 08:31:35
【问题描述】:

我想跳过以编程方式在 jupyter notebook 的单元格中执行一些代码,而不将所有内容包装在 if-else 块中。

到目前为止,我从这个 SO 问题中找到的最接近的解决方案:https://stackoverflow.com/a/56953105/3124206 是这样的:

class StopExecution(Exception):
    def _render_traceback_(self):
        pass

raise StopExecution

但是,它会停止当前单元格的执行以及所有后续单元格的执行,而我只想提前退出当前单元格。有没有办法继续执行其他单元格?

这是一个代码示例:

if skip_page:
    display(HTML('<!--SKIP-PAGE-->'))
    stop_cell()

render_some_output()

如果stop_cell()被调用,我希望render_some_output()不执行,而是笔记本执行整体进行。

【问题讨论】:

  • 我最近才发现 jupyter notebook,所以我可能并不完全清楚它可以做什么。是否有特定原因您不能将单元格内容放入函数中并调用它?在这种情况下,您可以像往常一样从函数中return。
  • @CGundlach 你可以,但是有很多单元格很丑
  • @pgcudahy:谢谢,这更接近了。不幸的是,它只适用于单元格的顶部,你是否看到了从它的中间返回的方法(同时保留当前的输出)?
  • 您能否提供一个您正在运行的代码示例以及您希望它在哪里停止?

标签: python jupyter-notebook jupyter


【解决方案1】:

我知道你不想使用很多 if else 语句,但我认为最简单的解决方案是在一个单元格中添加global_run_flag = False,然后在每个可选代码块之前添加if not global_run_flag: 然后当您将 global_run_flag 设置为 True 时,它​​将跳过所有包装代码块的执行。

【讨论】:

  • 谢谢,这就是我最终做的事情,我更“明确”,但不那么“平淡”:)
猜你喜欢
  • 2018-05-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-03
  • 1970-01-01
  • 1970-01-01
  • 2021-09-12
相关资源
最近更新 更多