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

时间:2022-11-03 06:54:53
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,)