Я обрабатываю некоторые ascii-данные, делаю некоторые операции, а затем записываю все обратно в другой файл (работа выполняется post_processing_0.main
, не возвращая ничего). Я хочу, чтобы распараллелить код с модулем многопроцессорной см следующего фрагмента кода:map_async vs apply_async: что я должен использовать в этом случае
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()
Я прочитал разницу между картой и асинхронным, но я не т понять это очень хорошо. Правильно ли применено мое многопроцессорное устройство?
В этом случае следует использовать map_async или apply_async? И почему?
Edit:
Я не думаю, что это дубликат вопроса Python multiprocessing.Pool: when to use apply, apply_async or map?. В этом вопросе ответ сосредоточен на порядке результата, который может быть получен с использованием двух функций. Здесь я спрашиваю: в чем разница, когда ничего не возвращается?
Возможный дубликат [Python multiprocessing.Pool: когда применять, применять \ _async или карту?] (Http://stackoverflow.com/questions/8533318/python-multiprocessing-pool-when-to-use-apply -apply-async-or-map) – user4815162342
Я прочитал этот вопрос, но он не раскрывает мои сомнения. Я задаю более строгий вопрос: в чем разница в этом случае, когда результат от параллелизированной функции не возвращается? – Pierpaolo