python multiprocessing.Pool 中map、map_async、apply、apply_async的區別

來源:互聯網
上載者:User

標籤: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的區別

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.