from multiprocessing import Pool
import multiprocessing
def work(i):
print("work'{}'执行中......".format(i), multiprocessing.current_process().name, multiprocessing.current_process().pid)
# time.sleep(2)
print("work'{}'执行完毕......".format(i))
return i
if __name__ == '__main__':
# 创建进程池
# Pool(3) 表示创建容量为3个进程的进程池
pool = Pool(3)
# 进程返回对象列表
res_l=[]
# 每个进程结果列表
res_data=[]
# 分发任务
for i in range(10):
# 利⽤进程池同步执⾏work任务,进程池中的进程会等待上⼀个进程执行完任务后才能执⾏下⼀个进程
# pool.apply(work, (i, ))
# 使⽤异步⽅式执⾏work任务
res=pool.apply_async(work, (i, ))
res_l.append(res)
#获取计算结果
for one in res_l:
res_data.append(one.get())
# 进程池关闭之后不再接受新的请求
pool.close()
# 等待po中所有子进程结束,必须放在close()后面, 如果使⽤异步⽅式执⾏work任务,主线程不再等待⼦线程执⾏完毕再退出!
pool.join()
# 输出最后结果
print(res_data)