Python 有栈/堆,内存是如何管理的?

您所在的位置:网站首页 python对内存的管理 Python 有栈/堆,内存是如何管理的?

Python 有栈/堆,内存是如何管理的?

2023-03-24 18:51| 来源: 网络整理| 查看: 265

回答问题

Python中的变量和内存是如何管理的?它是否有堆栈和堆以及用于管理内存的算法?鉴于这些知识,对于大量/数据处理的内存管理是否有任何建议?

Answers

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

自动!不,实际上,您只需创建一个对象,Python 虚拟机就会处理所需的内存以及它应该放置在内存布局中的什么位置。

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

当我们谈论CPython时,它使用 private heap 来存储对象。来自 CPython C API 文档:

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

内存回收主要由引用计数处理。也就是说,Python VM 会在内部记录有多少引用引用了一个对象,并在没有更多引用引用它时自动对它进行垃圾收集。此外,还有一种机制来打破循环引用(引用计数无法处理)通过检测无法到达的对象“孤岛”,在某种程度上与传统的 GC 算法试图找到所有可到达的对象相反.

注意: 请记住,此信息是 CPython 特定的。其他 python 实现,例如pypy、iron python、jython和其他实现细节可能彼此不同,并且与 CPython 不同。为了更好地理解这一点,它可能有助于理解 Python 语义(语言)和底层实现之间存在差异

鉴于这些知识,对于大量/数据处理的内存管理是否有任何建议?

现在我不能谈论这个,但我确信NumPy(用于数字运算的最流行的 Python 库)具有优雅地处理内存消耗的机制。

如果您想了解更多有关 Python 内部的信息,请查看以下资源:

单步执行 CPython(视频)

介绍 Python 虚拟机的内部结构

本着真正的黑客精神,CPython 对象分配器源代码



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3