標籤:order collect pre tip ack arguments esc logs cep
multiprocessing是python的多進程庫,multiprocessing.dummy則是多線程的版本,使用都一樣。
其中都有pool池的概念,進程池/線程池有共同的方法,其中方法對比如下 :
There are four choices to mapping jobs to process. Here are the differences:
Multi-args Concurrence Blocking Ordered-resultsmap no yes yes yesapply yes no yes nomap_async no yes no yesapply_async yes yes no no
In Python 3, a new function starmap
can accept multiple arguments.
Note that map
and map_async
are called for a list of jobs in one time, but apply
and apply_async
can only called for one job. However, apply_async
execute a job in background therefore in parallel. See examples:
# mapresults = pool.map(worker, [1, 2, 3])# applyfor x, y in [[1, 1], [2, 2]]: results.append(pool.apply(worker, (x, y)))def collect_result(result): results.append(result)# map_asyncpool.map_async(worker, jobs, callback=collect_result)# apply_asyncfor x, y in [[1, 1], [2, 2]]: pool.apply_async(worker, (x, y), callback=collect_result)
原文地址: http://blog.shenwei.me/python-multiprocessing-pool-difference-between-map-apply-map_async-apply_async/
python multiprocessing.Pool 中map、map_async、apply、apply_async的區別