Qué significa MemoryError y cómo solucionarlo
Referencia del error
MemoryError
Lenguaje
Severidad
CríticaCuándo ocurre
MemoryError se lanza cuando una operación de Python no puede asignar suficiente memoria para completarse.
Posibles soluciones
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.
Errores relacionados
Más detalles
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.
Posibles soluciones
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.
Ejemplos
Código que causa el error
# Allocating a huge list that exhausts RAM
data = [0] * (10 ** 10)Error en la terminal
MemoryError
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 timePractica en inglés
¿Cómo le explicarías un MemoryError a un compañero dev? Elige la frase correcta:
"I hit an error...
¿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