IPython笔记本-提前退出手机
我想在IPython笔记本的早期以编程方式退出单元格<代码>退出(0),但是会杀死内核 正确的方法是什么?我不希望分割单元格或手动停止执行 这远不是“正确的”,但提前退出的一种方法是创建运行时错误。因此,与其使用IPython笔记本-提前退出手机,python,ipython,ipython-notebook,Python,Ipython,Ipython Notebook,我想在IPython笔记本的早期以编程方式退出单元格退出(0),但是会杀死内核 正确的方法是什么?我不希望分割单元格或手动停止执行 这远不是“正确的”,但提前退出的一种方法是创建运行时错误。因此,与其使用exit(0)干净地从脚本中提前返回,还不如使用类似于 print(variable_to_query) () + 1 这将运行代码直到此时(完成打印语句),然后失败。稍微多一些“正确”选项: 这将使您摆脱除最坏尝试/之外的所有障碍 raise KeyboardInterrupt 一个更干净
exit(0)
干净地从脚本中提前返回,还不如使用类似于
print(variable_to_query)
() + 1
这将运行代码直到此时(完成打印语句),然后失败。稍微多一些“正确”选项:
这将使您摆脱除最坏尝试/之外的所有障碍
raise KeyboardInterrupt
一个更干净的版本:
assert(False)
或者简单地说:
raise
如果你想省去几次击键。我将从中重新发布我的答案,因为解决方案也应该适用于你的问题。它会
- 退出时不杀死内核
- 不显示完整回溯(在IPython shell中不使用回溯)
- 不强迫您使用try/excepts巩固代码
- 使用或不使用IPython,无需更改代码
An exception has occurred, use %tb to see the full traceback.
IpyExit
要安静地停止当前电池和后续电池,请执行以下操作:
class StopExecution(Exception):
def _render_traceback_(self):
pass
raise StopExecution
你能解释一下原因吗?如果您决定在一个单元格中只运行一半代码,然后停止,我想您可能会引发一个异常,但我不确定这会起到什么作用。@andi:那是不正确的。我的问题是关于停止执行单个单元格,而不是退出整个笔记本!对不起,我被你的标题“退出牢房”弄糊涂了。马吕斯:这是一种发展战略。我仍然喜欢在单个单元格中一次性运行大量代码,但通常希望查询变量状态而不运行整个过程。我对IPN比较陌生,以前在通过命令行脚本进行开发时使用exit(0)来完成这项工作。@andi:你能解开副本吗?问题是它很混乱,你会得到一个回溯。找到一个安静地结束执行的解决方案会很好。与插入一些不存在的变量或键入0/0等任何其他错误有什么区别?没有区别。任意性如何在Kaggle内核笔记本中使用提前退出单元?@Shauryaair对不起,我还没有使用Kaggle,所以我不知道。没有什么内置方法可以做到这一点?这太完美了!非常简单和干净!非常干净,谢谢!现在我可以执行
def exit():raise StopExecution
。
class StopExecution(Exception):
def _render_traceback_(self):
pass
raise StopExecution