gpt4 book ai didi

python - Python 是否有堆栈/堆以及如何管理内存?

转载 作者:IT老高 更新时间:2023-10-28 21:32:24 25 4
gpt4 key购买 nike

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

最佳答案

How are variables and memory managed in Python.

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

Does it have a stack and a heap and what algorithm is used to manage memory?

当我们谈论 CPython 时,它使用 私有(private)堆 来存储对象。 From the CPython C API documentation :

Memory management in Python involves a private heap containing all Python objects and data structures. The management of this private heap is ensured internally by the Python memory manager. The Python memory manager has different components which deal with various dynamic storage management aspects, like sharing, segmentation, preallocation or caching.

内存回收主要由引用计数处理。也就是说,Python VM 会在内部记录有多少引用引用了一个对象,并在没有更多引用引用它时自动对它进行垃圾收集。另外还有a mechanism to break circular references (引用计数无法处理)通过检测无法到达的对象“孤岛”,somewhat in reverse of traditional GC algorithms试图找到所有可到达的对象。

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

Given this knowledge are there any recommendations on memory management for large number/data crunching?

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

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

关于python - Python 是否有堆栈/堆以及如何管理内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14546178/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com