1. 程式人生 > >07 進程池的同步方法和異步方法

07 進程池的同步方法和異步方法

.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 進程池的同步方法和異步方法