gpt4 book ai didi

python - python中的模块级垃圾收集

转载 作者:太空宇宙 更新时间:2023-11-04 07:48:02 37 4
gpt4 key购买 nike

假设我有一个模块 mod_x,如下所示:

class X:
pass

x=X()

现在,假设我有另一个模块,它只执行 import mod_x,并开始其业务。模块变量 x 在解释器的生命周期内不会被进一步引用。

类实例 x 是否会在解释器终止时的任何时候 被垃圾回收?

最佳答案

不,变量永远不会被垃圾回收(直到进程结束),因为模块对象将保留在 sys.modules['mod_x'] 中并且它将有一个引用到 mod_x.x——引用计数永远不会下降到 0(直到所有模块在程序结束时被删除)并且这不是“循环垃圾”的问题——它是一个完全有效的实时引用,并证明没有人每个人都做(例如)a getattr(sys.modules[a], b) 其中字符串变量 ab 恰好值 'mod_x''x' 至少与解决停机问题一样困难;-)。 (“至少”,因为随时可能会动态加载更多代码...!-)。

关于python - python中的模块级垃圾收集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2095907/

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