如何在Python中管理变量和内存?它有堆栈和堆吗?用于管理内存的算法是什么?有了这些知识,对于大量/数据处理的内存管理有什么建议吗?
如何在Python中管理变量和内存。
自动地!不,真的,您只是创建一个对象,Python虚拟机将处理所需的内存以及将其放置在内存布局中的位置。
它有堆栈和堆吗?用于管理内存的算法是什么?
当我们谈论CPython它时,使用 私有堆 来存储对象。从CPython C API文档中:
CPython
Python中的内存管理涉及一个包含所有Python对象和数据结构的私有堆。此私有堆的管理由Python内存管理器在内部确保。Python内存管理器具有不同的组件,这些组件处理各种动态存储管理方面的问题,例如共享,分段,预分配或缓存。
内存回收主要通过 引用计数 来处理。也就是说,Python VM保留一个内部日志,记录有多少引用引用了一个对象,并在没有更多引用引用该对象时自动对其进行垃圾回收。此外,还有一种机制可以通过检测对象的“孤岛”来中断循环引用(引用计数无法处理),这与尝试查找所有可到达对象的传统GC算法有些相反。
注意: 请记住,此信息是 CPython 特定的。其他Python实现,比如pypy,iron python,jython当谈到自己的实现细节和其他人可能来自彼此之间以及与CPython的不同。为了更好地理解它, 可能有助于理解Python的语义(语言)和底层实现之间的区别。
pypy
iron python
jython
有了这些知识,对于大量/数据处理的内存管理有什么建议吗?
现在我不能说这个,但是我确定NumPy(用于数字运算的最受欢迎的python库)具有可以优雅地处理内存消耗的机制。