-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Ernesto ha scritto: > Ciao a tutti, > > premetto che non ho alcuna esperienza con i threads. Ciò nonostante, > vorrei iniziare a capire come poterli utilizzare per sfruttare le > architetture multicore delle moderne cpu e, quindi, migliorare le > prestazione di uno script su cui sto lavorando.
Purtroppo in Python l'utilizzo dei thread è pesantemente limitato dall'uso di un lock globale (GIL); solo un thread alla volta può eseguire codice Python. > In particolare, lo > script in questione effettua un parsing di un input file e subito dopo > genera una serie di file di dimensioni più piccole. Di seguito, un > loop è utilizzato per effettuare alcune operazioni su tutti i file > creati. Tali operazioni sono le medesime per ogni file. Mi chiedevo > se, utilizzando i threads, fossi in grado di ridurre i tempi di > esecuzione del loop, magari indirizzando parte dei file generati a > threads indipendenti. Temo che non avrai nessun incremento di prestazioni usando i thread. L'unico vantaggio nell'usare i thread si ha quando si chiamano funzioni scritte in C che rilasciano il GIL (come ad esempio la read su un socket). Ti consiglio quindi di usare i processi ed il modulo multiprocessing: http://docs.python.org/library/multiprocessing.html Per le versioni di Python inferiori alla 2.6 lo trovi come package esterno. Il package multiprocessing ti offre una implementazione di un Pool: http://docs.python.org/library/multiprocessing.html#module-multiprocessing.pool che dovrebbe essere tutto quello di cui hai bisogno; in particolare il metodo map. > [...] Ciao Manlio -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.10 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iEYEARECAAYFAksU8VQACgkQscQJ24LbaUQ0aACcCeIclPNjc3DWdSynUtW+GiAz SlsAoJlWD0m3jVvPyx9OwYUXCCGkRpGd =DLqi -----END PGP SIGNATURE----- _______________________________________________ Python mailing list [email protected] http://lists.python.it/mailman/listinfo/python
