gpt4 book ai didi

python - 在函数内部导入 : is memory reclaimed upon function exit?

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

相关问题:

如果一个import语句在函数内部,函数退出后它占用的内存是否会被回收?如果是,回收的时间是确定性的(甚至是-ish)吗?

def func():
import os
...
# function about to exit; will memory occupied by `os` be freed?

如果有人知道 micropython 的行为关于这个话题,加分。

最佳答案

第一次导入执行模块中的代码。它创建模块对象的属性。每个后续导入仅引用由第一个导入创建的模块对象。

Python 中的模块对象实际上是单例。为此,Python 实现必须在第一次导入后保留唯一的模块实例,而不管模块绑定(bind)到的名称。如果它无论如何都绑定(bind)到一个名称,因为还有 from some_module import some_name 形式的导入。

所以不,内存没有被回收。

不知道 Micropython,但如果它彻底改变这里的语义,我会感到惊讶。你可以简单地自己测试一下:

some_module.py:

value = 0

some_other_module.py:

def f():
import some_module
some_module.value += 1
print(some_module.value)

f()
f()

这应该打印数字 1 和 2。

关于python - 在函数内部导入 : is memory reclaimed upon function exit?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46813776/

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