codememo

상당히 큰 JSON 파일 읽기

tipmemo 2023. 4. 3. 21:32
반응형

상당히 큰 JSON 파일 읽기

큰 json 인코딩 파일이 몇 개 있어요.가장 작은 것은 300MB, 나머지는 약 2GB에서 10GB 이상의 여러 GB입니다.

Python에 파일을 로드하려고 하면 메모리가 부족한 것 같습니다.

이 코드를 사용하여 성능을 테스트했습니다.

from datetime import datetime
import json

print datetime.now()

f = open('file.json', 'r')
json.load(f)
f.close()

print datetime.now()

별로 놀랍지 않게, 이것이 원인이 됩니다.MemoryError...인 것 같습니다.json.load()json.loads(f.read())파일 전체를 먼저 메모리에 덤프하려고 합니다.이것은 확실히 동작하지 않습니다.

어떻게 하면 깨끗하게 해결할 수 있을까요?


오래된 건 알지만 복제품은 아닌 것 같아요.답은 같지만 질문은 다릅니다.「복제」에서는, 대용량 파일을 효율적으로 읽어내는 방법이 문제지만, 이 질문은 메모리에 전혀 들어가지 않는 파일에 대해 다루고 있습니다.효율은 필요 없습니다.

여기서의 문제는 JSON이 포맷으로서 일반적으로 풀 해석되고 다음으로 메모리 내에서 처리된다는 것입니다.이러한 대량의 데이터에는 분명히 문제가 있습니다.

이 문제를 해결하려면 데이터를 파일의 스트림으로 읽고 작업한 다음 반복하는 작업을 수행합니다.

가장 좋은 옵션은 블록 파일이 아닌 스트림으로 JSON과 함께 작동하는 모듈인 ijson과 같은 것을 사용하는 것으로 보입니다.

편집: 또한 볼만한 가치가 있습니다.- Kashif의 코멘트Henrik Heino의 코멘트는 에 대해.

언급URL : https://stackoverflow.com/questions/10382253/reading-rather-large-json-files

반응형