On Wed, Oct 29, 2014 at 2:52 PM, Antonio Conte <barbon...@gmail.com> wrote:
> salve a tutti, > > sto lavorando su uno script che lancia su piu' client un comando. per il momento sto usando subprocess, ma volevo lanciare i processi in > parallelo > e ricavare l'output mano a mano che i processi terminano. > > I processi li lanci in parallelo con subprocess. Il problema è l'interazione. > tenete conto che lo script va lanciato da cron, e mi serve l'output del > comando > per inviarlo via mail. > dopo varie prove sono arrivato a questo, ma mi chiedevo se fosse il modo > giusto > (cioe' l'utilizzo del contatore _act) per aspettare che tutti i processi > terminino e per leggere dalla queue l'output. > > Nel codice del thread ti suggerisco di usare la funzione subprocess.check_output. In generale io proverei ad usare multiprocessing.Pool ed il metodo map. Purtroppo non esiste l'analogo Pool nel modulo threading, però da una veloce ricerca è venuta fuori questa "sorpresa": http://stackoverflow.com/questions/3033952/python-thread-pool-similar-to-the-multiprocessing-pool >>> from multiprocessing.pool import ThreadPool usando ThreadPool.map il tuo codice diventa molto più semplice ed inoltre non soffri del problema che ti ha segnalato Daniele su troppi processi/thread in esecuzione. Se sei curioso esiste anche una alternativa senza usare un thread o processo di supporto, ma è più complesso e non trovi nulla di pronto nella stdlib (forse qualcosa in Python 3.x). > [...] Ciao Manlio
_______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python