Forum
>>
Principianti
>>
chiarimenti sul modulo multiprocessing
Pagina: 1
Esegui il login per scrivere una risposta.
Pagina: 1
Scritto da como |
2017-10-11 12:14:50 - chiarimenti sul modulo multiprocessing
|
Buongiorno a tutti,
sto lavorando con un programma piuttosto lungo (impiega qualche ora a terminare), quindi vorrei riuscire a farlo lavorare in parallelo sui 4 cores del mio pc, solo che dalle varie guide che ho letto mi sorgono alcuni domande: - la prima è sicuramente se qualcuno ha qualche consiglio su che oggetto usare: al momento sono indeciso tra Pool() e Process() credo che Pool sia piu' promettente, nonchè piu semplice da usare, ma qui vengo alla seconda domanda... - l'oggetto Pool lavora su cores diversi o sullo stesso core alternando i processi? Lo chiedo perchè ho provato a testarne il funzionamento con un semplice progamma: from multiprocessing import Pool import time work = (["A", 5], ["B", 2], ["C", 1], ["D", 3], ["E",4]) def work_log(work_data): print(" Process %s waiting %s seconds" % (work_data0, work_data1)) time.sleep(int(work_data1)) print(" Process %s Finished." % work_data0) def pool_handler(): p = Pool(2) p.map(work_log, work) if __name__ == '__main__': pool_handler()e l'output che ottengo è il seguente: Process A waiting 5 seconds Process B waiting 2 seconds Process B Finished. Process C waiting 1 seconds Process C Finished. Process D waiting 3 seconds Process A Finished. Process E waiting 4 seconds Process D Finished. Process E Finished. provando poi con Pool(5) anziché (2) l'output è di questo tipo: Process A waiting 5 seconds Process B waiting 2 seconds Process C waiting 1 seconds Process D waiting 3 seconds Process E waiting 4 seconds Process C Finished. Process B Finished. Process D Finished. Process E Finished. Process A Finished. che mi ha lasciato spiazzato perchè io ho solo 4 cores e quindi mi sarei immaginato di ottenere lo stesso output di Pool(4), ovvero: Process A waiting 5 seconds Process B waiting 2 seconds Process C waiting 1 seconds Process D waiting 3 seconds Process C Finished. Process E waiting 4 seconds Process B Finished. Process D Finished. Process A Finished. Process E Finished. Grazie e scusate per la lunghezza del messaggio |
|
Scritto da Daniele aka Palmux |
2017-10-11 21:48:49 - Re: chiarimenti sul modulo multiprocessing
|
Ciao caro, qualche tempo fa avevo letto questo, dove vengono spiegati molto bene i concetti basilari dell'argomento.
Cya |
|
Scritto da como |
2017-10-12 15:29:32 - Re: chiarimenti sul modulo multiprocessing
|
Grazie per la risposta, era una pagina che avevo già trovato, ma non le avevo prestato la debita attenzione, ora credo di aver capito qualcosa in piu: posso dare un numero qualsiasi di processi in pasto a Pool, ma le performance non migliorano una volta che il numero di processi attivi occupa completamente i miei cores.
|
Pagina: 1
Esegui il login per scrivere una risposta.