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
'프로그래밍언어 > 파이썬[Error]' 카테고리의 다른 글
[파이썬][Error] 087. PermissionError - access denied to root-only file (0) | 2025.05.31 |
---|---|
[파이썬][Error] 086. MemoryError - object leak in infinite loop (0) | 2025.05.31 |
[파이썬][Error] 084. MemoryError - cannot allocate large list (1) | 2025.05.30 |
[파이썬][Error] 083. EOFError - EOF when reading a line (0) | 2025.05.30 |
[파이썬][Error] 082. StopIteration - generator exhausted (0) | 2025.05.30 |