Trong Python 2.7, khi tôi tải tất cả dữ liệu từ một tập tin văn bản của 2.5GB vào bộ nhớ để chế biến nhanh như thế này:Python tải 2GB file văn bản vào bộ nhớ
>>> f = open('dump.xml','r')
>>> dump = f.read()
Tôi đã nhận lỗi sau:
Python(62813) malloc: *** mmap(size=140521659486208) failed (error code=12)
*** error: can't allocate region
*** set a breakpoint in malloc_error_break to debug
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
MemoryError
Tại sao Python cố phân bổ 140521659486208
byte bộ nhớ cho dữ liệu 2563749237
byte? Làm thế nào để sửa mã để làm cho nó tải tất cả các byte?
Tôi đang rảnh khoảng 3 GB RAM. Tệp này là một tệp Wiktionary xml dump.
Tại sao bạn không phân tích cú pháp XML một cách tuyến tính mà không tải nguồn vào bộ nhớ trước? – Alfe
Tôi đã thử nó và nó đã cho tôi rất dài. Và vì tôi có rất nhiều RAM, tôi muốn tải mọi thứ vào RAM để làm cho nó nhanh hơn. – pckben
Bao nhiêu ram? 64 hoặc 32 bit? – joslinm