python並發——從線程池獲取返回值


並發是快速處理大量相似任務的絕佳辦法,但對於有返回值的方法,需要一個容器專門來存儲每個進程處理完的結果

from multiprocessing import Pool
import time

#返回值只有進程池才有,父子進程沒有返回值
def func(i): 
    time.sleep(1)
    return i*i

if __name__ == '__main__':
    p = Pool(5)
    #從異步提交任務獲取結果
    res_l = [] 
    for i in range(20):
        res = p.apply_async(func,args=(i,)) 
        res_l.append(res) 
    for res in res_l:  
        print(res.get()) 

還有使用map的方式:

from multiprocessing import Pool
import time
def func(i): #返回值只有進程池才有,父子進程沒有返回值
    time.sleep(0.5)
    return i*i

if __name__ == '__main__':
    p = Pool(5)
    ret = p.map(func,range(10))
    print(ret)

 


免責聲明!

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



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