在Python中变量和内存是如何管理的?它有一个堆栈和一个堆吗?使用什么算法来管理内存?有了这些知识,对于大量数据处理的内存管理有什么建议吗?
发布于 2013-01-27 17:55:18
如何在Python中管理变量和内存。
自动的!不,实际上,您只需创建一个对象,Python虚拟机就会处理所需的内存以及它在内存布局中的放置位置。
它有堆栈和堆吗?使用什么算法来管理内存?
当我们谈论CPython时,它使用一个私有堆来存储对象。From the CPython C API documentation
Python中的
内存管理涉及一个包含所有Python对象和数据结构的私有堆。这个私有堆的管理由Python内存管理器在内部保证。Python内存管理器具有不同的组件,这些组件处理各种动态存储管理方面,如共享、分段、预分配或缓存。
内存回收主要由引用计数处理。也就是说,Python VM保留了一个内部日志,记录有多少引用引用了一个对象,并在不再有引用它的引用时自动垃圾收集它。此外,还有a mechanism to break circular references (引用计数无法处理),它通过检测不可达的对象“岛”,somewhat in reverse of traditional GC algorithms试图找到所有可达的对象。
注意:请记住,此信息是特定于CPython的。其他python实现,如pypy、iron python、jython和其他实现,在实现细节方面可能彼此不同,也不同于CPython。为了更好地理解这一点,理解Python的语义(语言)和底层实现之间的差异可能会有所帮助
考虑到这些知识,对大量数据处理的内存管理有什么建议吗?
现在我不能谈论这一点,但我确信NumPy (用于数字处理的最流行的python库)具有优雅地处理内存消耗的机制。
如果您想更多地了解Python的内部结构,请查看以下参考资料:
真正的黑客精神,
https://stackoverflow.com/questions/14546178
复制相似问题