Sto elaborando alcuni dati ascii, eseguo alcune operazioni e poi scrivo di nuovo su un altro file (lavoro eseguito da post_processing_0.main
, senza restituire nulla). Voglio parallelizzare il codice con il modulo multiprocessing, vedere il seguente frammento di codice:map_async vs apply_async: cosa dovrei usare in questo caso
from multiprocessing import Pool
import post_processing_0
def chunks(lst,n):
return [ lst[i::n] for i in xrange(n) ]
def main():
pool = Pool(processes=proc_num)
P={}
for i in range(0,proc_num):
P['process_'+str(i)]=pool.apply_async(post_processing_0.main, [split_list[i]])
pool.close()
pool.join()
proc_num=8
timesteps=100
list_to_do=range(0,timesteps)
split_list=chunks(list_to_do,proc_num)
main()
ho letto la differenza tra mappa e asincrono, ma I don t capisco molto bene. La mia applicazione del modulo di multiprocessing è corretta?
In questo caso, dovrei usare map_async o apply_async? E perché?
Edit:
non credo che questo è un duplicato della domanda Python multiprocessing.Pool: when to use apply, apply_async or map?. Nella domanda, la risposta si concentra sull'ordine del risultato che può essere ottenuto utilizzando le due funzioni. Qui sto chiedendo: qual è la differenza quando non viene restituito nulla?
possibile duplicato di [Python multiprocessing.Pool: quando utilizzare apply, applicare \ _async o map?] (Http://stackoverflow.com/questions/8533318/python-multiprocessing-pool-when-to-use-apply -apply-async-or-map) – user4815162342
Ho letto quella domanda, ma non chiarisce i miei dubbi. Sto ponendo una domanda più rigida: qual è la differenza in questo caso, in cui non viene restituito alcun risultato dalla funzione parallelizzata? – Pierpaolo