[Python] Migliorare le prestazioni usando i core?

Aplemaser deevotion a gmail.com
Dom 31 Mar 2013 21:49:29 CEST


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

>
> Alcuni database come PostgreSQL sono in grado di leggere direttamente
> files in formato CSV, ovviamente aggiungendo un header opportuno.
>

Sì lo so, ma non è il mio caso.



> In linea di massima, e in particolare considerando come hai sviluppato
> il codice (ossia se passi molto tempo a manipolare stringhe, invece che
> a leggere/scrivere su file), una riscrittura in C dovrebbe risolvere il
> problema senza usare threads addizionali.
>

Non conosco i C se non per i rudimenti scolastici di parecchi anni fa.




> Certo, perchè in qualsiasi linguaggio, a meno di non avere codice
> speciale, usi sempre e solo un unico thread.
>

Ok,



> Non esiste nessun comando magico che ti parallelizzi il codice.
>

Ho capito dalla tua risposta di aver usato un termine improprio, cancella
la mia richiesta, volevo usare un sinonimo della prima.




> Devi dirci esattamente cosa sta facendo il tuo codice.
> Meglio se il codice è breve e lo puoi mettere su pastebin o simili.
>

Il codice è molto lungo e diviso in diversi file, copiarlo su pastebin non
è davvero possibile. In linea di massima da fonti diverse che sono file CSV
in prevalenza, ma anche alcune viste logiche (via ODBC), creo un solo
database con tutti i dati, dopo averli mergiati e manipolati secondo
necessità.



> In generale per parallelizzare del codice, lo devi partizionare in N
> pezzi indipendenti, ed eseguire ciascun pezzo in un thread.  Di solito N
> = <numero di core> oppure N = n * <numero di core>, dipende da cosa fa
> il codice, in particolare dal tempo speso in I/O).
>
>
Non mi è familiare, ma ho capito il senso.

Grazie delle risposte.
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.python.it/pipermail/python/attachments/20130331/ce0bb292/attachment.html>


Maggiori informazioni sulla lista Python