【问题标题】:How to stop an infinite loop safely in JupyterLab?如何在 JupyterLab 中安全地停止无限循环?
【发布时间】:2019-12-02 13:22:17
【问题描述】:

我们将 jupyterLab 用于一些长时间运行的操作(在我们的案例中进行物理模拟)。用户应该能够在不杀死内核的情况下安全地停止这些操作。

有没有干净的方法来做到这一点?

是否有这方面的最佳实践?


我的单元格看起来像这样:

environment = gym.make()
running = True
while running:
    environment.step()
    running = ???
serialize(environment)

注意事项

【问题讨论】:

    标签: python-3.x jupyter-notebook ipython jupyter-lab ipython-magic


    【解决方案1】:

    根据https://stackoverflow.com/a/19040553/,IPython 通过发送 SIGINT 来中断内核。不应该像How to stop an infinite loop safely in Python?中描述的那样以编程方式捕获和处理信号。

    编辑:这听起来很有帮助:graceful interrupt of while loop in ipython notebook

    【讨论】:

    • 如果可能的话,我想保留原始信号处理程序以应对紧急情况,例如当我想快速停止单元而不丢失内核状态时。不过,该解决方案似乎确实有效。
    • 顺便说一下,另一个有趣的选择是使用上下文管理器,stackoverflow.com/a/4205859/9907994
    猜你喜欢
    • 2015-12-31
    • 2021-05-06
    • 1970-01-01
    • 2021-12-05
    • 2013-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多