同步或異步獲取返回值
#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)