Python multiprocessing.Pool的四種方法比較:: map, apply, map_async, apply_async

There are four choices to mapping jobs to process. Here are the differences:

             Multi-args   Concurrence    Blocking     Ordered-results
map          no           yes            yes          yes
apply        yes          no             yes          no
map_async    no           yes            no           yes
apply_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:

# map
results = pool.map(worker, [1, 2, 3])
 
# apply
for x, y in [[1, 1], [2, 2]]:
    results.append(pool.apply(worker, (x, y)))
 
def collect_result(result):
    results.append(result)
 
# map_async
pool.map_async(worker, jobs, callback=collect_result)
 
# apply_async
for x, y in [[1, 1], [2, 2]]:
    pool.apply_async(worker, (x, y), callback=collect_result)


 記錄python multiprocessing Pool的map和apply_async方法 _pool.map_async

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章