PDA

View Full Version : [Python] Dare un boost di velocita` all' I/O. Come?


s12a
05-05-2009, 11:24
Salve a tutti,
Sto scrivendo un breve e semplice programma che effettua operazioni di I/O su file binari di grandi dimensioni con le istruzioni built-in open() e read(). Purtroppo la velocita` di operazione e` molto bassa, e processare file di svariati megabyte di dimensione e` praticamente impossibile. Ed avrei per giunta anche la necessita` di scrivere file di dimensioni altrettante elevate.

E` possibile in Python 2.6 qualcosa di simile al buffered reader/writer di Java, che esegue tutto in memoria ram con notevole vantaggio prestazionale rispetto all'operazione diretta sui file?

cdimauro
05-05-2009, 12:11
Hai due soluzioni per risolvere il tuo problema:

http://docs.python.org/library/io.html
http://docs.python.org/library/stringio.html

La prima è usando l'I/O bufferizzato.

La seconda è usando le stringhe come fossero dei file, ma ovviamente lettura e scrittura sono molto più velocizzate, perché sta tutto in memoria.
Quindi puoi usarle per leggere un grosso blocco di dati, e processarlo in memoria con questo modulo, oppure per generare un grosso blocco di dati, da scrivere poi in un colpo solo.

s12a
05-05-2009, 12:17
Sembra che sia cio` che faccia al caso mio, specie la seconda opzione, molto interessante. Me la studio un po', poi eventualmente posto i risultati.
Grazie :D