본문 바로가기
프로그래밍언어/파이썬[Error]

[파이썬][Error] 084. MemoryError - cannot allocate large list

by about_IT 2025. 5. 30.
728x90

MemoryError: cannot allocate large list 오류는 파이썬이 리스트나 배열 등 대용량 객체를 생성하려 할 때, 메모리가 부족하여 할당에 실패했을 때 발생합니다. 이는 물리적 메모리가 부족하거나, 할당하려는 객체의 크기가 너무 커서 운영체제 또는 인터프리터가 처리할 수 없는 경우입니다.

특히 수백만 개 이상의 요소를 포함하는 리스트를 한 번에 생성하려고 할 때, 또는 반복문 내에서 점진적으로 메모리가 누적되면서 시스템 한계를 넘어서면 이 오류가 발생합니다.

● 오류 발생 예시

# 매우 큰 리스트 생성 시도
large_list = [0] * (10 ** 10)

리스트의 크기가 너무 커서 시스템 메모리가 감당할 수 없는 경우 MemoryError가 발생합니다.

MemoryError: cannot allocate large list

● 해결 방법

  • 리스트를 한 번에 생성하지 말고 배치(batch) 단위로 처리
  • 불필요한 데이터는 delgc.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