Jupyter notebook Jupyter:即使前一个单元格失败也运行下一个单元格的技巧
如果长时间运行的计算单元出现故障,我想发送警报,但我不想尝试/除非,因为当我看到错误时,我会发送不必要的消息。有办法做到这一点吗 所需的工作流程: 1) 运行Jupyter notebook Jupyter:即使前一个单元格失败也运行下一个单元格的技巧,jupyter-notebook,jupyter,alerts,Jupyter Notebook,Jupyter,Alerts,如果长时间运行的计算单元出现故障,我想发送警报,但我不想尝试/除非,因为当我看到错误时,我会发送不必要的消息。有办法做到这一点吗 所需的工作流程: 1) 运行status=train()cell 2) 在前15秒内未发现任何错误 3) 执行下一个单元格send_alert('done or error'),无论单元格1的结果如何,都将执行该单元格 4) 去做点别的吧 下面是一个单单元解决方案,每次都会让代码感到恼火: try: start = time.time() train(
status=train()
cell
2) 在前15秒内未发现任何错误
3) 执行下一个单元格send_alert('done or error')
,无论单元格1的结果如何,都将执行该单元格
4) 去做点别的吧
下面是一个单单元解决方案,每次都会让代码感到恼火:
try:
start = time.time()
train(...)
except Exception as e:
pass
end = time.time()
if end - start > 60: send_alert('done')
这里有一个解决方案,它有一个非常小但可扩展的自定义iPython magic 您可以将其保存在名为
magics.py
的文件中,或者安装一个pip软件包。我使用了pip可安装的东西:
.
├── magics
│ ├── __init__.py
│ └── executor.py
└── setup.py
#magics/executor.py
导入时间
从IPython.core.magic导入Magics、Magics\u类、cell\u magic
@魔术班
职业特例(魔法):
@细胞魔术
def分离器(自身、线路、单元):
超时=2
尝试:
开始=时间。时间()
self.shell.ex(单元格)
除:
如果time.time()-start>timeout:
打印(“慢失败!”)
其他:
如果time.time()-start>timeout:
打印(“完成”)
\magics/\uuuuuu init\uuuuuuu.py
from.exceptor导入exceptor
def加载ipython扩展(ipython):
ipython.register_magics(例外)
下面是一个使用此功能的示例。请注意,%load\u ext magics
采用包的名称,然后提供名为%exceptor
的单元格魔法
您可以使用
nbconvert
(请参阅)从CLI获取此信息,但看起来您希望以交互方式执行此操作?这看起来像是你想要一个装饰师,但对于一个细胞:写一个定制的线/细胞魔术会为你工作吗?谢谢!这很有效。使用flit制作pypi包。