Il 03 settembre 2010 17:50, enrico franchi <enrico.fran...@gmail.com> ha scritto: > 2010/9/3 Pietro Battiston <m...@pietrobattiston.it>: >> Il giorno ven, 03/09/2010 alle 15.58 +0200, Giuseppe Amato ha scritto: >>> Ti conviene ordinare e prendere l'ultimo per ogni colonna utlizzando >>> sort(cmp) sulle colonne. L'algoritmo di sort è già ottimizzato rispetto >>> ai confronti che hai previsto tu. Se hai bisogno anche dell'indice del >>> campo butti tutto in un dizionario del tipo {<campo>:<indice>} però devi >>> fare attenzione alle duplicazioni, che comunque dovrai gestire nella >>> ricerca del massimo >> >> Ehm... no, direi che così peggiora le cose. > > Potrebbe essere. La teoria dice che hai ragione tu; in pratica quello > che succede non lo so (ma ritengo probabile che peggiora come > prevedi). > > > Io suggerisco una rivoluzione: visto che appunto non puo' che fare mxn > confronti, > perche' non guarda se riesce ad inserirsi nell'oggetto che legge il > file csv in modo che > si tiene traccia del piu' grosso mano mano che li legge? > > Praticamente *almeno* non fa due volte il giro su tutti gli elementi e > si limita ad aggiungere una piccolissima e poco costosa operazione > alla fatica di leggere tutto il file. >
Visto che il problema è facilmente divisibile in sottoproblemi, per ottimizzare, suggerirei a questo punto il multiprocessing, magari dividi quelle 200 colonne in x parti e le dai in pasto a x processi che lavorano in parallelo.Per esempio per un quadcore usi 4 processi. Ovviamente il multiprocessing ha dei tempi per creare i processi e per la comunicazioni tra processi etc.., quindi può dare un risultato solo se l'elaborazione è veramente lunga. Nel tuo caso i processi non devono nemmeno comunicare tra loro, ma devi solo aggregare i risultati alla fine , per cui.... Ma sono tutte soluzioni che non diminuiscono la complessità del problema, che è lineare. Ciao Gianluca Esposito _______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python