函数内部导入:函数退出时是否回收内存?

2024-03-10

相关问题:

  • python - 在文件顶部导入与在函数内部导入 https://stackoverflow.com/questions/46813425/python-import-at-top-of-file-vs-inside-a-function

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

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

如果有人了解以下行为micropython https://github.com/micropython/micropython关于这个话题,加分。


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

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

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

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

一些_模块.py:

value = 0

some_other_module.py:

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

f()
f()

这应该打印数字 1 和 2。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

函数内部导入:函数退出时是否回收内存? 的相关文章

随机推荐