[Python] Migliorare le prestazioni usando i core?

Aplemaser deevotion a gmail.com
Dom 31 Mar 2013 23:58:20 CEST


Il giorno 31 marzo 2013 22:02, Manlio Perillo <manlio.perillo a gmail.com> ha
scritto:

>
> Ok.
> Allora andiamo con ordine.
> Che database usi?
> Quanto tempo impiega il tuo codice, e quanto tempo vorresti impiegasse?
>
> Ciascun file CSV e vista ODBC serve per inserire i dati in una tabella
> diversa?
>

I dati dei CSV e le viste ODBC servono, dopo opportune bonifiche (spazi
superflui, caratteri speciali, valori numerici trasformati in valori
testuali, etc), per compilare diverse tabelle diverse. Si tratta di
anagrafiche di prodotti, che hanno logiche di gestione diverse, con
disponibilità e prezzi variabili anche più volte al giorno. Questi dati
vengono poi consultati su un database MySQL, ma qui non ho nessun vincolo,
potrei usare anche altro. Le origini dei dati non sono fisicamente sulla
macchina dove risiedono script in Python e database MySQL.

Attualmente il tempo di importazione è di 4 ore o poco meno. Voglio ridurre
il tempo, ma non so fino a quanto posso arrivare. Tutto è nato perchè ho
notato che 3 core su 4 dormono i sonni dei giusti mentre l'altro corse
lavora come un pazzo e quindi vorrei impegnare la CPU per ridurre questi
tempi.


Supponi che ciascun file CSV contenga i dati da inserire in una sola
> tabella.
> Invece di processare ciascun file CSV in seguenza, puoi farlo in
> parallelo usando un processo separato.
>
> Ciascun processo si occuperà di:
> - - aprire il file CSV
> - - aprire una connessione al database
> - - fare il parsing del file CSV
> - - inserire i dati nel database
>
>
> Dai una occhiata alla documentazione del modulo multiprocessing,
> disponibile da Python 2.6.
>

Non è la base di partenza che ho, cioè non ho CSV tutti uguali da importare
in processi separati, ma ho capito esattamente il tuo suggerimento.

Ancora grazie mille delle risposte e dell'attenzione.
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.python.it/pipermail/python/attachments/20130331/573e218b/attachment-0001.html>


Maggiori informazioni sulla lista Python