¿Cómo se administran las variables y la memoria en Python?
¡Automágicamente! No, en realidad, solo crea un objeto y la máquina virtual Python maneja la memoria necesaria y dónde se colocará en el diseño de la memoria.
¿Tiene una pila y un montón y qué algoritmo se usa para administrar la memoria?
Cuando hablamos de CPython
él, usa un montón privado para almacenar objetos. De la documentación de la API de CPython C :
La gestión de la memoria en Python implica un montón privado que contiene todos los objetos y estructuras de datos de Python. La administración de este montón privado está asegurada internamente por el administrador de memoria de Python. El administrador de memoria de Python tiene diferentes componentes que se ocupan de varios aspectos de la administración de almacenamiento dinámico, como compartir, segmentar, preasignar o almacenar en caché.
La recuperación de memoria se maneja principalmente mediante el recuento de referencias . Es decir, la VM Python mantiene un diario interno de cuántas referencias se refieren a un objeto, y la basura lo recolecta automáticamente cuando no hay más referencias que se refieren a él. Además, hay un mecanismo para romper referencias circulares (que el recuento de referencias no puede manejar) detectando "islas" inalcanzables de objetos, algo al revés de los algoritmos GC tradicionales que intentan encontrar todos los objetos alcanzables.
NOTA: Tenga en cuenta que esta información esCPython
específica. Otras implementaciones pitón, tales comopypy
,iron python
,jython
y otros pueden ser diferentes unos de otros y de CPython cuando se trata de sus implementaciones específicas. Para comprenderlo mejor, puede ser útil comprender que existe una diferencia entre Python, la semántica (el lenguaje) y la implementación subyacente.
Teniendo en cuenta este conocimiento, ¿existen recomendaciones sobre la gestión de la memoria para procesar grandes números / datos?
Ahora no puedo hablar de esto, pero estoy seguro de que NumPy (la biblioteca de Python más popular para procesar números) tiene mecanismos que manejan el consumo de memoria con elegancia.
Si desea saber más sobre los aspectos internos de Python, eche un vistazo a estos recursos: