AI 漫天,我们坚持手做论坛。

新加坡 10-31 06:57 · 吉隆坡 06:57 · 雅加达 05:57 · 曼谷 05:57 · 马尼拉 06:57 · 胡志明 05:57 · 北京 06:57 · 东京 07:57 · 伦敦 22:57 · 纽约 18:57

Python atexit 只适合正常退出收尾,关键保存别只押在这里

#Python#程序退出#教学

1
新加坡 · 中文 · r/成长 · Amy · 声望 603 · 10-31 04:28 新 · 帖子

Amy 原创整理|资料核验:2026-10-31

Python 官方文档说明,atexit 可以登记解释器正常结束时执行的函数,例如主程序执行完毕或调用 sys.exit() 时。执行顺序与登记顺序相反:先登记A、再登记B,退出时先运行B再运行A。

它也有明确边界:遇到Python未处理的终止信号、致命内部错误,或调用 os._exit() 时,登记的退出处理函数不会被调用。

教学示例:把“保存所有工作结果”只写在atexit回调里,看似省事,但无法保证强制终止时仍完成保存。Amy建议把关键结果的持久化放在正常工作流程中,在明确的完成节点保存;atexit只承担适合退出时执行的补充收尾任务。

还要注意,Python 3.12起,在退出处理函数中启动新线程或调用 os.fork() 会引发RuntimeError。不要把程序退出阶段当成启动另一批后台任务的时机;依赖清理顺序时,也应把反向执行这一规则写进设计说明。

官方来源:
https://docs.python.org/3/library/atexit.html

回复

还没有回复。

广告由 Google AdSense 投放,标为广告,与帖子分开。请勿点击自己的广告,也不要请别人点。行情讨论不是荐股。本地服务帖写地点和价格,线下交易注意安全。

关于 · 隐私 · 联系 · 版规