MemoryError se lanza cuando una operación de Python no puede asignar suficiente memoria para completarse. A diferencia de la mayoría de los lenguajes, Python lanza una excepción en lugar de bloquearse, dándote la oportunidad de liberar recursos. Sin embargo, cuando se lanza, el sistema generalmente está bajo una presión extrema.
Por qué ocurre
- •Crear una lista, diccionario o cadena enorme que supera la RAM disponible.
- •Cargar un archivo grande completamente en memoria en lugar de transmitirlo.
- •Una fuga de memoria acumula objetos con el tiempo hasta agotar la RAM.
- •Ejecutar muchos procesos simultáneamente en una máquina con RAM limitada.
Ejemplos
Código que causa el error
# Allocating a huge list that exhausts RAM
data = [0] * (10 ** 10)Error en la terminal
MemoryError
Cómo solucionarlo
Usa generadores e iteradores para procesar datos en fragmentos en lugar de cargar todo a la vez. Para archivos grandes, lee línea por línea o usa archivos mapeados en memoria. Perfila el uso de memoria con tracemalloc para encontrar la fuente de alta asignación.
Código corregido
# Use a generator instead of materializing the full list
def big_range(n):
for i in range(n):
yield 0
for item in big_range(10 ** 10):
break # process one at a timeErrores relacionados
¿Listo para practicar tu inglés en el trabajo?
Lingua-e tiene ejercicios interactivos basados en conversaciones reales de developers: standups, code reviews, retrospectivas y más. Practica hasta que salga solo.
Prueba Lingua-e gratis