Python並發編程-進程池的返回值


同步或異步獲取返回值

#p = Pool()
    #p.map(funcname,iterable) 默認異步的執行任務,且自帶close,join功能
    #p.apply(), 同步調用進程池的方法
    #p.apply_async(),異步調用,和主進程完全異步,需要手動close和join
from multiprocessing import Pool
import time
def func(i): #返回值只有進程池才有,父子進程沒有返回值
    time.sleep(0.5)
    return i*i

if __name__ == '__main__':
    p = Pool(5)
    res_l = [] #從異步提交任務獲取結果
    for i in range(10):
        # res = p.apply(func,args=(i,)) #apply的結果就是func的返回值,同步提交
        # print(res)

        res = p.apply_async(func,args=(i,)) #apply_sync的結果就是異步獲取func的返回值
        res_l.append(res) #從異步提交任務獲取結果
    for res in res_l:  print(res.get()) #等着func的計算結果

利用MAP返回值

  • map是一次性返回所有子進程的返回值, 自帶close,join
  • apply_async分批返回
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