from multiprocessing import Pool
import os,time
def work(n):
print('%s run'%os.getpid())
time.sleep(3)
return n**2
# if __name__=='__main__':
# p=Pool(3)
# res_list=[]
# for i in range(10):
# res=p.apply(work,args=(i,)) 同步调用
# res_list.append(res)
# print(res_list) #直接得到结果
if __name__=='__main__':
p=Pool(3)
res_list=[]
for i in range(10):
res=p.apply_async(work,args=(i,))
res_list.append(res)
p.close() #不会再去执行新的程序
p.join() #等待进程池的进程执行完毕,主进程结束,进程池可能还没来得及执行,也就跟着一起结束了
print(res_list)
for i in res_list:
print(i.get()) #使用get来获取apply_aync的结果,如果是apply,
# 则没有get方法,因为apply是同步执行,立刻获取结果,也根本无需get