gpt4 book ai didi

Python:通过终结器在程序终止之前刷新缓冲区

转载 作者:太空宇宙 更新时间:2023-11-03 12:35:29 25 4
gpt4 key购买 nike

我保留了一个事务缓存,以便在水印或对象完成时刷新(到持久存储)。因为 __del__no longer guaranteed to be called在每个对象上,将类似函数(或 __del__ 本身)挂接到 atexit.register(在初始化期间)的适当方法是否合适?

如果我没记错的话,这 导致该方法绑定(bind)到的对象一直挂起,直到程序终止。这不太可能成为问题,但也许有更优雅的解决方案?

注意:我知道使用 __del__ 并不理想,因为 it can cause uncatchable exceptions ,但我想不出另一种方法来完成整个程序中的级联 finalize() 调用。 TIA!

最佳答案

如果您必须处理资源,首选方法是显式调用 close()finalize() 方法。查看 with 语句来抽象它。在您的情况下, weakref 模块可能是一个选项。缓存的对象可以由系统进行垃圾回收,并调用它们的 __del__() 方法,或者如果它们仍然存在,您可以完成它们。

关于Python:通过终结器在程序终止之前刷新缓冲区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/388154/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com