07 進程池的同步方法和異步方法
阿新 • • 發佈:2019-01-14
.get 運行 proc pro pytho python apply tar append
import time from multiprocessing import Process,Pool def f1(n): time.sleep(0.5) # print(n) return n*n if __name__ == ‘__main__‘: pool = Pool(4) # pool.apply(f1,args=(2,)) #同步方法 res_list = [] for i in range(10): # print(‘任務%s‘%i) #進程池的同步方法,將任務變成了串行 # res = pool.apply(f1,args=(i,)) # print(res) #進程池的異步方法 res = pool.apply_async(f1,args=(i,)) print(res) # as_result = res.get() #join的效果 # print(as_result) res_list.append(res) pool.close() #鎖住進程池,不再讓其他的程序往裏面扔新的任務了,確保沒有新的任務交給進程池裏面的進程 pool.join() for r in res_list: print(r.get()) time.sleep(2) #主進程運行結束,進程池裏面的任務全部停止,不會等待進程池裏面的任務 print(‘主進程直接結束‘) p = Process(target=f1,)
07 進程池的同步方法和異步方法