python中如何管理内存?

python

Python 内存管理的细节取决于实现。 Python 的标准实现 CPython 使用引用计数来检测不可访问的对象,并使用另一种机制来收集引用循环,定期执行循环检测算法来查找不可访问的循环并删除所涉及的对象。 gc 模块提供了执行垃圾回收、获取调试统计信息和优化收集器参数的函数。

但是,其他实现(如 Jython 或 PyPy ),)可以依赖不同的机制,如完全的垃圾回收器 。如果你的Python代码依赖于引用计数实现的行为,则这种差异可能会导致一些微妙的移植问题。

在一些Python实现中,以下代码(在CPython中工作的很好)可能会耗尽文件描述符:

forfileinvery_long_list_of_files:

f=open(file)

c=f.read(1)

实际上,使用CPython的引用计数和析构函数方案, 每个新赋值的 f 都会关闭前一个文件。然而,对于传统的GC,这些文件对象只能以不同的时间间隔(可能很长的时间间隔)被收集(和关闭)。

如果要编写可用于任何python实现的代码,则应显式关闭该文件或使用 with 语句;无论内存管理方案如何,这都有效:

forfileinvery_long_list_of_files:

withopen(file)asf:

c=f.read(1)

以上是 python中如何管理内存? 的全部内容, 来源链接: utcz.com/z/520606.html

回到顶部