小编典典

Python是否有堆栈/堆,并且如何管理内存?

python

如何在Python中管理变量和内存?它有堆栈和堆吗?用于管理内存的算法是什么?有了这些知识,对于大量/数据处理的内存管理有什么建议吗?


阅读 207

收藏
2021-01-20

共1个答案

小编典典

如何在Python中管理变量和内存。

自动地!不,真的,您只是创建一个对象,Python虚拟机将处理所需的内存以及将其放置在内存布局中的位置。

它有堆栈和堆吗?用于管理内存的算法是什么?

当我们谈论CPython它时,使用 私有堆 来存储对象。从CPython C
API文档中

Python中的内存管理涉及一个包含所有Python对象和数据结构的私有堆。此私有堆的管理由Python内存管理器在内部确保。Python内存管理器具有不同的组件,这些组件处理各种动态存储管理方面的问题,例如共享,分段,预分配或缓存。

内存回收主要通过 引用计数 来处理。也就是说,Python
VM保留一个内部日志,记录有多少引用引用了一个对象,并在没有更多引用引用该对象时自动对其进行垃圾回收。此外,还有一种机制可以通过检测对象的“孤岛”来中断循环引用(引用计数无法处理),这与尝试查找所有可到达对象的传统GC算法有些相反

注意: 请记住,此信息是 CPython 特定的。其他Python实现,比如pypyiron pythonjython当谈到自己的实现细节和其他人可能来自彼此之间以及与CPython的不同。为了更好地理解它,
可能有助于理解Python的语义(语言)和底层实现之间的区别。

有了这些知识,对于大量/数据处理的内存管理有什么建议吗?

现在我不能说这个,但是我确定NumPy(用于数字运算的最受欢迎的python库)具有可以优雅地处理内存消耗的机制。

2021-01-20