进程池问题day17

#进程池的问题
#创建的进程不多的时候可以直接使用方法一或方法二,
# 如果要创建很多进程时,手动创建的工作量太大,所以就用到了进程池
"""
池:
1.体积不是太大,也不是太小,可控
2.水位:进程个数的多少
3.容量有限
"""
#创建进程池
#步骤一:导入模块
# from multiprocessing import Pool
#步骤二:创建
#格式:Pool(n) n表示进程个数,基本上认为不设上限,(但是有上限)
# Pool(n)

from multiprocessing import Pool
import time,random

def worker(msg):
    t_start=time.time()
    print("%s--开始执行"%(msg))
    time.sleep(random.randint(0,2))     #模拟工作所消耗的时间
    t_end=time.time()
    print("%s--执行完毕,消耗时间为%.2f"%(msg,t_end-t_start))
if __name__ == '__main__':
    p=Pool(3)               #设置容量是3的进程池,开发的时候基本上不设上限
    for i in range(10):
        #把进程添加到进程池
        #格式:进程池.apply_async(func="进程要调用的目标",args=(参数1,2,3))
        #每次循环将会用空闲的子进程来调用目标
        p.apply_async(func=worker,args=(i,))  #异步操作
        # p.apply(func=worker, args=(i,))  是一个串行操作,以后开发基本上用不到
    #关闭进程池,关闭进程池后将不在进行新任务,
    p.close()
    #等待进程池中所有进程执行完后再执行,注意join一定要放在close后
    p.join()         #阻塞他们
    print("结束")

猜你喜欢

转载自blog.csdn.net/qq_39112101/article/details/88424794