728x90
MemoryError: cannot allocate large list
오류는 파이썬이 리스트나 배열 등 대용량 객체를 생성하려 할 때, 메모리가 부족하여 할당에 실패했을 때 발생합니다. 이는 물리적 메모리가 부족하거나, 할당하려는 객체의 크기가 너무 커서 운영체제 또는 인터프리터가 처리할 수 없는 경우입니다.
특히 수백만 개 이상의 요소를 포함하는 리스트를 한 번에 생성하려고 할 때, 또는 반복문 내에서 점진적으로 메모리가 누적되면서 시스템 한계를 넘어서면 이 오류가 발생합니다.
● 오류 발생 예시
# 매우 큰 리스트 생성 시도
large_list = [0] * (10 ** 10)
리스트의 크기가 너무 커서 시스템 메모리가 감당할 수 없는 경우 MemoryError
가 발생합니다.
MemoryError: cannot allocate large list
● 해결 방법
- 리스트를 한 번에 생성하지 말고 배치(batch) 단위로 처리
- 불필요한 데이터는
del
후gc.collect()
호출 - 리스트 대신 제너레이터(generator)를 사용하여 메모리 사용 최소화
● 예시 코드 (제너레이터 활용)
def generate_numbers(n):
for i in range(n):
yield i
for number in generate_numbers(10 ** 10):
process(number)
● 자주 하는 실수
- 리스트 컴프리헨션을 사용해 수억 개의 원소를 한 번에 생성
- 메모리 해제를 고려하지 않고 대용량 반복 처리
- Pandas DataFrame을 무한히 누적 저장
● 결론
MemoryError - cannot allocate large list
오류는 시스템 메모리 한계를 초과하는 객체 생성 시 발생합니다. 대용량 데이터를 다룰 때는 제너레이터나 배치 처리 방식으로 메모리를 효율적으로 관리하는 것이 중요합니다.
728x90
'프로그래밍언어 > 파이썬[Error]' 카테고리의 다른 글
[파이썬][Error] 086. MemoryError - object leak in infinite loop (0) | 2025.05.31 |
---|---|
[파이썬][Error] 085. MemoryError - cannot read large file into memory (0) | 2025.05.31 |
[파이썬][Error] 083. EOFError - EOF when reading a line (0) | 2025.05.30 |
[파이썬][Error] 082. StopIteration - generator exhausted (0) | 2025.05.30 |
[파이썬][Error] 081. NotImplementedError - must override abstract method in subclass (0) | 2025.05.30 |