[Python] Aggiornare file pickle

Luca Bacchi bacchilu a gmail.com
Lun 16 Maggio 2011 16:50:32 CEST


Allora funziona come Word!

;-)

Il giorno 16 maggio 2011 16:28, Filadelfo Fiamma
<philosganga a gmail.com> ha scritto:
>
> Ciao ragazzi,
> Vi ricontatto in merito alla discussione che ho aperto il 10 maggio.
> Ricapitolando in breve, mi sono interessato nella gestione
> incrementale dei file pickle, facendo in modo che il salvataggio
> dell'intero oggetto non avvenga ad ogni dump(), ma che vada ad
> interessare  solo la parte da aggiungere. In questo modo vengono
> creati N file pickle che sono raggruppati alla fine del processo,
> oppure su richiesta, in un unico file pickle.
> Ho effettuato svariate prove, verificando il funzionamento del
> processo, in particolar modo la correttezza delle informazioni: in
> effetti cosi è.
> L'unica anomalia che ho riscontrato è la dimensione del pickle: il
> pickle creato dal raggruppamento di tutti i pickle di aggiornamento,
> ha una dimensione maggiore rispetto a quanto aspettato (Il paragone è
> stato fatto con la dimensione di un file pickle generato senza
> gestione incrementale, in modo classico).
> Premetto che non mi sono minimamente fidato di ricostruire "a mano"
> l'oggetto, con il copia incolla dei pkl a livello testuale, bensì ho
> ricostruito in memoria l'oggetto, che è un dizionario, ed ho
> effettuato il dump finale.
> Analizzando il contenuto testuale del pickle, ho notato l'aggiunta di
> diverse righe (g5,g6,g7 ecc) ripetute per ogni chiave del dizionario.
> Ho inoltre notato che, utilizzando tipi di dato semplice, non è
> presente questa differenza nella dimensione.
> Da cosa può dipendere questa anomalia, se di anomalia si tratta?
>
> Grazie mille
> Buon pomeriggio a tutti
>
> FF
>
> >Il 10 maggio 2011 17:17, Filadelfo Fiamma <philosganga a gmail.com> ha scritto:
> > Ringrazio tutti quanti :)
> > Mi permetto di descrivere brevemente ciò che ho sperimentato, seppur
> > esso non sia generica come applicazione, ma riesce a gestire oggetti
> > fatti in questo modo: {key:[]}, nel mio caso è un log per gli accessi
> > effettuati su di un certo file, ordinati cronologicamente.
> >
> > La classica dump() va a ricreare il mio log.pkl ogni qualvolta si
> > effettua un accesso.
> > La dump() modificata invece crea un file log_X.pkl, con X
> > incrementale, che contiene solo l'accesso appena effettuato.
> >
> > La load() modificata dunque tiene di tutti i file log_X e li raggruppa
> > per ottenere l'intero oggetto, in più si occupa anche di eliminare
> > tutti i file log_X e di riunire tutta l'informazione in un unico file
> > pkl, considerando che quest'azione avviene solo in fase di
> > inizializzazione, ho ritenuto che fosse tollerabile rallentare questa
> > fase per poter essere veloci nelle dump(), magari sarebbe opportuno
> > effettuare questo raggruppamento ogni qualvolta si raggiunga un certo
> > numero di file log_X.
> >
> > Ho effettuato il profiling inserendo 2000 volte la chiave 'pippo',
> > avente come valore un indice incrementale.
> > La dump() classica il computer ha impiegato 27.321 secondi
> > La dump() modificata invece ha impiegato 4.114 secondi
> >
> > Buona serata a tutti
> >
> _______________________________________________
> Python mailing list
> Python a lists.python.it
> http://lists.python.it/mailman/listinfo/python


Maggiori informazioni sulla lista Python