In Python 2.7, quando carico tutti i dati da un file di testo di 2,5 GB in memoria per l'elaborazione più veloce in questo modo:Python carico 2 GB di file di testo nella memoria
>>> f = open('dump.xml','r')
>>> dump = f.read()
ho ottenuto il seguente errore:
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
Perché Python ha tentato di allocare memoria 140521659486208
byte per i dati di 2563749237
byte? Come aggiusto il codice per far caricare tutti i byte?
Ho circa 3 GB di RAM gratuiti. Il file è un dump di Wikizionario xml.
Perché non analizzare l'XML in modo lineare senza caricare prima la sorgente in memoria? – Alfe
L'ho provato e mi ci è voluto molto tempo. E poiché ho molta RAM, voglio caricare tutto nella RAM per renderlo più veloce. – pckben
Quanto ram? 64 o 32 bit? – joslinm