thể trùng lặp:
Is there a memory efficient and fast way to load big json files in python?Đọc file json khá lớn trong Python
Vì vậy, tôi có một số json mã hóa file khá lớn. Nhỏ nhất là 300MB, nhưng đây là nhỏ nhất. Phần còn lại là nhiều GB, bất cứ nơi nào từ khoảng 2GB đến 10GB +.
Vì vậy, tôi dường như hết bộ nhớ khi cố tải tệp bằng Python. Tôi hiện đang chỉ chạy một số thử nghiệm để xem khoảng thời gian giao dịch với công cụ này sẽ mất để xem nơi để đi từ đây. Đây là mã tôi đang sử dụng để kiểm tra:
from datetime import datetime
import json
print datetime.now()
f = open('file.json', 'r')
json.load(f)
f.close()
print datetime.now()
Không quá ngạc nhiên, Python cho tôi một lỗi MemoryError. Có vẻ như json.load() gọi json.loads (f.read()), mà đang cố gắng đổ toàn bộ tập tin vào bộ nhớ trước, điều này rõ ràng sẽ không hoạt động.
Bất kỳ cách nào tôi có thể giải quyết vấn đề này một cách rõ ràng?
Tôi biết điều này là cũ, nhưng tôi không nghĩ rằng đây là bản sao. Trong khi câu trả lời là như nhau, câu hỏi là khác nhau. Trong "trùng lặp", câu hỏi là làm thế nào để đọc các tệp lớn một cách hiệu quả, trong khi câu hỏi này đề cập đến các tệp thậm chí không phù hợp với bộ nhớ. Hiệu quả là không cần thiết.
Tương tự nếu không phải cùng một câu hỏi: http://stackoverflow.com/questions/2400643/is-there-a-memory-efficient-and-fast-way-to-load-big-json-files-in- python – tskuzzy
Vấn đề là nếu tệp JSON là một danh sách khổng lồ (ví dụ), thì phân tích cú pháp nó thành Python sẽ không có ý nghĩa gì nhiều nếu không làm tất cả cùng một lúc. Tôi đoán đặt cược tốt nhất của bạn là tìm một mô-đun xử lý JSON như SAX và cung cấp cho bạn các sự kiện để bắt đầu mảng và nội dung, thay vì cung cấp cho bạn các đối tượng. Thật không may, điều đó không tồn tại trong thư viện chuẩn. –
Vâng, tôi muốn đọc nó trong cùng một lúc. Một trong những kế hoạch tiềm năng của tôi là đi qua nó một lần và dán mọi thứ vào một cơ sở dữ liệu để tôi có thể truy cập nó hiệu quả hơn. –