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

[파이썬][Error] 085. MemoryError - cannot read large file into memory

by about_IT 2025. 5. 31.
728x90

MemoryError: cannot read large file into memory 오류는 매우 큰 파일을 한 번에 메모리로 불러오려고 할 때 발생하는 오류입니다. 파이썬은 read()pandas.read_csv() 등에서 내부적으로 메모리에 전체 파일을 로드하려고 시도하며, 이 과정에서 시스템의 물리적 메모리(RAM)가 부족할 경우 해당 오류가 발생합니다.

특히 수 기가바이트(GB)를 넘는 대용량 CSV, 로그 파일, JSON 파일 등을 분석할 때, 전체 데이터를 메모리에 적재하지 않고 스트리밍 처리 또는 청크 단위로 처리하는 것이 권장됩니다.

● 오류 발생 예시

with open("large_file.txt", "r") as f:
    data = f.read()  # 전체 파일을 메모리에 로드

파일 크기가 매우 클 경우 MemoryError가 발생합니다.

● 해결 방법

  • 파일을 한 줄씩 또는 일정 크기씩 읽어들이는 방식 사용
  • pandas.read_csv(..., chunksize=...) 옵션 사용
  • 메모리에 불필요하게 남아 있는 다른 객체 삭제

● 예시 코드 (청크 단위 처리)

import pandas as pd
for chunk in pd.read_csv("large_file.csv", chunksize=100000):
    process(chunk)

● 자주 하는 실수

  • read() 또는 readlines()로 전체 파일을 한 번에 메모리에 적재
  • pandas로 대용량 파일을 로드하면서 low_memory=False 설정 누락
  • 사용하지 않는 중간 결과를 계속 누적 저장

● 결론

MemoryError - cannot read large file into memory는 대용량 파일을 한 번에 불러오려고 할 때 발생합니다. 스트리밍 처리, 청크 단위 처리 등 메모리 친화적인 방식으로 데이터를 읽는 것이 필수입니다.

728x90