Programing

Python에서 다소 큰 json 파일 읽기

crosscheck 2020. 10. 25. 11:37
반응형

Python에서 다소 큰 json 파일 읽기


중복 가능성 :
파이썬에서 큰 json 파일을로드하는 메모리 효율적이고 빠른 방법이 있습니까?

그래서 다소 큰 json 인코딩 파일이 있습니다. 가장 작은 것은 300MB이지만 이것이 가장 작습니다. 나머지는 약 2GB에서 10GB 이상까지 여러 GB입니다.

그래서 파이썬으로 파일을로드하려고 할 때 메모리가 부족한 것 같습니다. 나는 현재이 물건을 다루는 데 걸리는 시간을 대략적으로 확인하기 위해 몇 가지 테스트를 실행하고 있습니다. 테스트에 사용하는 코드는 다음과 같습니다.

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의 의견 에 대한 json-streamer그리고 헨릭 하이노의 발언 에 대해 bigjson.

참고 URL : https://stackoverflow.com/questions/10382253/reading-rather-large-json-files-in-python

반응형