[Python] split di file di grandi dimensioni

Daniele Varrazzo piro a develer.com
Ven 4 Dic 2009 13:39:37 CET


On Fri, 4 Dec 2009 13:32:56 +0100, Marco Beri <marcoberi a gmail.com> wrote:
> 2009/12/4 Ernesto <e.picardi a unical.it>
> 
>>
>>  oltre a questo (che cmq porterà i maggiori benefici) potremmo
>>  guadagnare
>>> qualcosa anche con:
>>>
>>> Il link che ho postato usa un approccio diverso. Usa delle liste in
>>> memoria e scrive solo quando ha raggiunto una certa soglia.
>>>
>>> Solo due file aperti al massimo ed esecuzione molto veloce (infatti
>>> scrive
>>> un blocco di molte righe e non una per volta).
>>>
>>>
>> Stavo tentando un approccio simile. In pratica potrei creare un
>> dizionario
>> dove associare ad ogni valore una lista con le singole righe e poi
>> scriverle
>> su file se la lista è uguale ad un numero prefissato di righe.
> 
> 
> Ok, attento in uscita dal loop: devi scrivere le ultime righe rimaste
nel
> dizionario.
> 
> E ricordati di avere un limite massimo di righe tale da gestire anche la
> situazione peggiore:\
>  MAX_LENGTH * MAX_NUM_FILE * (MAX_RIGHE - 1)
> 
> Murphy è sempre in agguato :-)

Io infatti avrei salvato tutti i dizionari dopo un numero prefissato di
righe lette dal file di input. In questo modo l'occupazione di memoria è
controllata e le prestazioni credo siano in linea (qualche file potrebbe
avere poche righe, ma se su 1000 file aperti si scrivono 1M di righe
statisticamente siamo lì). Credo sia anche molto più semplice da scrivere e
meno soggetto ad errori.

-- 
Daniele Varrazzo - Develer S.r.l. 
http://www.develer.com


Maggiori informazioni sulla lista Python