python 多個子進程並返回值


apply_async()本身就可以返回被進程調用的函數的返回值。上一個創建多個子進程的代碼中,如果在函數func中返回一個值,那么pool.apply_async(func, (msg, ))的結果就是返回pool中所有進程的值的對象(注意是對象,不是值本身)。

 

import multiprocessing
import time
 
def func(msg):
    return multiprocessing.current_process().name + '-' + msg
 
if __name__ == "__main__":
    pool = multiprocessing.Pool(processes=4) # 創建4個進程
    results = []
    for i in xrange(10):
        msg = "hello %d" %(i)
        results.append(pool.apply_async(func, (msg, )))
    pool.close() # 關閉進程池,表示不能再往進程池中添加進程,需要在join之前調用
    pool.join() # 等待進程池中的所有進程執行完畢
    print ("Sub-process(es) done.")
 
    for res in results:
        print (res.get())

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM