Python에서 다소 큰 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
'Programing' 카테고리의 다른 글
| 이 Valgrind 경고는 무엇을 의미합니까? (0) | 2020.10.25 |
|---|---|
| 제네릭의 실제 예는 무엇입니까 (0) | 2020.10.25 |
| java : comp / env 란 무엇입니까? (0) | 2020.10.25 |
| Python 3-인코딩 / 디코딩 대 바이트 / Str (0) | 2020.10.25 |
| 서로 의존하는 속성을 초기화하는 방법 (0) | 2020.10.25 |