07 进程池的同步方法和异步方法

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,)

  

转载于:https://www.cnblogs.com/work14/p/10267093.html

你可能感兴趣的:(07 进程池的同步方法和异步方法)