[Python] Migliorare le prestazioni usando i core?

Aplemaser deevotion a gmail.com
Lun 1 Apr 2013 20:43:17 CEST


Il giorno 01 aprile 2013 16:54, Daniele Varrazzo <piro a develer.com> ha
scritto:

> Hai ragione: facendo andare in parallelo i core sfrutteresti meglio la
> macchina, e il tuo problema non è I/O bound altrimenti non vedresti neanche
> quel singolo core maxxato.
>

Esatto, è il mio punto di partenza questo.



> Come farlo non è gratis e non c'è una ricetta generica. Se il tuo input è
> su tanti file, lancia 4 processi in parallelo e fai lavorare ognuno su 1/4
> dell'input. Se il file di input è uno solo puoi spezzare il processo in due
> parti: uno che legge l'input, lo spezza e ne manda i pezzi in una coda;
> altri 3-4 processi che leggono dalla coda in round-robin e fanno il loro
> lavoro sul pezzetto. Per questo tipo di lavori ZeroMQ è perfetto: ha poco
> overhead e le primitive giuste per questo tipo di coordinazione. Come detto
> non esistono ricette generiche, ma esistono dei pattern generici, e 0MQ
> rende abbastanza semplice implementarli.
>

Non conosco quanto citi e quindi approfondirò sicuramente. Sono consapevole
che nulla ti è regalato e che devi sporcarti le mani per ottenere i
migliori risultati.



> Tieni conto che, dopo l'elaborazione, passare i dati a MySQL come stai
> probabilmente facendo (con delle INSERT) non è il modo più efficiente. Su
> PostgreSQL usare COPY è almeno 20 volte più efficiente di INSERT per il
> bulk-load dei dati. Se MySQL è opzionale come dici, abbandonalo e usa
> postgres: psycopg offre supporto a COPY da Python <
> http://initd.org/psycopg/**docs/usage.html#copy<http://initd.org/psycopg/docs/usage.html#copy>>.
> Se resti in MySQL penso tu possa usare LOAD DATA INFILE per velocizzare il
> caricamento, ma è un po' più articolato (devi salvare i dati in un file
> temporaneo o creare una pipe).
>

Bene, come dicevo è opzionale l'utilizzo di MySQL e quindi analizzerò
volentieri il passaggio a PostgreSQL, almeno un test lo farò sicuramente.

Grazie per le risposte.
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.python.it/pipermail/python/attachments/20130401/77ce537d/attachment.html>


Maggiori informazioni sulla lista Python