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