首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在python出现异常的情况下,如何正确保存状态?

在python出现异常的情况下,如何正确保存状态?
EN

Stack Overflow用户
提问于 2022-05-05 23:01:43
回答 1查看 137关注 0票数 0

我也想

  1. 从文件中加载数据,
  2. 研究这些数据,
  3. 并最终将数据保存回文件。

但是,由于步骤2可能需要几个小时,所以我希望确保在出现意外异常时保存进度。数据被加载到一个对象中,以便于使用它。我首先想到的是将对象类转换为上下文管理器并使用with-statement。然而,我必须在with-statement中编写我的整个程序,这感觉不太对。所以我环顾四周,发现了这个问题,它本质上要求同样的东西。在这一个的回答中,我认为weakref.finalize是最有前途的。然而,在文档的底部有一条注释说:

注意:重要的是确保func、args和kwargs不直接或间接地拥有对obj的任何引用,因为否则obj永远不会被垃圾收集。特别是,函数不应该是obj的一种约束方法。

因为我想保存那个对象的字段,所以我会引用它们,直接遇到这个问题。

这是否意味着__exit__-function对象将永远不会被调用,或者直到程序崩溃/退出时才被调用?

做这件事的方式是什么?

EN

回答 1

Stack Overflow用户

发布于 2022-05-05 23:13:28

这有点麻烦,您仍然可以打包代码,但我通常只是将main()封装在try except块中。

然后你可以用一个except来处理pdb.set_trace(),这意味着无论你得到什么异常,你的程序都会掉进一个交互式终端,而不是中断。

之后,您可以手动检查错误,并将任何处理过的数据转储到泡菜或任何您想要做的事情中。一旦您修复了错误,设置您的代码读取泡菜,并从它停止的地方拾取。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72134439

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档