from multiprocessing import Pool
import time,random
def jincheng(i):
print('%s开始'%i)
time.sleep(random.random()) #加时间是为了体现多进程的并发效果
print('%s结束'%i)
if __name__ == '__main__':
p=Pool(3) #设定进程池容量
for i in range(10): #有十个任务等待执行
p.apply_async(jincheng,args=(i,)) #把任务加到进程池中,注意args的参数是元祖
p.close()
p.join() #必须加阻塞,因为在有进程池的多进程中,主进程不会等待子进程先结束
print('主进程结束了')
进程池是面对有许多进程需要,而不想创建众多进程,设置一个进程池里面可以并发执行一定数量的任务,来轮番执行众多任务。当进程池中有任务完成,位置有空缺时下一个等待中的任务就会替补上去。就好比一个营业大厅设置固定数量的服务窗口,每个窗口都有一个人在接受服务后面有人在排队等待,前面的办完,后面的上去。不可能为每一个客户开辟个人窗口。这样会节省资源。