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