并发是快速处理大量相似任务的绝佳办法,但对于有返回值的方法,需要一个容器专门来存储每个进程处理完的结果

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)
05-11 22:24