Khi tôi tải tệp vào json, mức sử dụng bộ nhớ pythons tăng vọt lên khoảng 1.8 GB và dường như tôi không thể nhận được bộ nhớ đó. Tôi đặt cùng một trường hợp thử nghiệm đó là rất đơn giản:Sử dụng bộ nhớ lớn của mô-đun json của Python?
with open("test_file.json", 'r') as f:
j = json.load(f)
Tôi xin lỗi mà tôi không thể cung cấp tệp json mẫu, tập tin thử nghiệm của tôi có rất nhiều thông tin nhạy cảm, nhưng đối với bối cảnh, tôi đang đối phó với một tập tin theo thứ tự 240MB. Sau khi chạy 2 dòng trên, tôi đã sử dụng bộ nhớ 1.8GB đã đề cập trước đó. Nếu sau đó tôi thực hiện việc sử dụng bộ nhớ del j
sẽ không giảm chút nào. Nếu tôi làm theo điều đó với một số gc.collect()
nó vẫn không giảm. Tôi thậm chí đã cố gắng dỡ bỏ các mô-đun json và chạy một gc.collect.
Tôi đang cố gắng chạy một số hồ sơ bộ nhớ nhưng heapy đã khuấy động 100% CPU trong khoảng một giờ và chưa tạo ra bất kỳ đầu ra nào.
Có ai có ý tưởng nào không? Tôi cũng đã thử sử dụng cjson ở trên thay vì mô-đun json đóng gói. cjson sử dụng khoảng 30% bộ nhớ ít hơn nhưng nếu không hiển thị chính xác cùng một vấn đề.
Tôi đang chạy Python 2.7.2 trên máy chủ Ubuntu 11.10.
Tôi rất vui khi tải lên bất kỳ trình thu thập bộ nhớ nào và xem liệu nó có tốt hơn sau đó heapy và cung cấp bất kỳ chẩn đoán bạn có thể nghĩ là cần thiết. Tôi đang tìm kiếm một tệp json thử nghiệm lớn mà tôi có thể cung cấp cho bất kỳ ai khác để cho nó đi.
Hãy dùng thử với một tệp khác. Bạn đang chạy phiên tương tác hoặc tập lệnh python? Cả hai có hiển thị cùng một vấn đề không? – heltonbiker
Liên quan: http://stackoverflow.com/questions/2400643/is-there-a-memory-efficient-and-fast-way-to-load-big-json-files-in-python – ChristopheD
@ChristopheD Vấn đề của tôi là với bộ nhớ không bao giờ được phát hành. Tôi không quan tâm nhiều đến mức nhiều bộ nhớ được sử dụng trong quá trình phân tích cú pháp. – Endophage