python高级进阶_19_快速理解python进程池(pool)

在前面的博客我也写了什么是池子, 池子就是里面的东西给你准备好了,你直接用就行了,相当于缓存。

进程池也是创建进程的, 和前面 Process 类,Process 子类差别很大,

  1. 进程池 可以一次创建多个进程,并且可以执行多个任务
  2. Process 类,Process 子类 ,需要实例化 才能达到,并不能真正意义上的多任务

请看示例代码:

解释在注释里,自己理解下,不懂请评论谢谢
from multiprocessing  import Pool   # 导入Pool 
import time,os    
def test(num):
    for i in range(5):   # 
        print("这是我-----第%d:进程任务----第%d:子任务,它的进程号码为%d"%(num,i,os.getpid()))
        time.sleep(1)
if __name__=='__main__':
    pool = Pool(2)      # 创造进程池, 并设置进程的数量 
    for i in range(10):
        pool.apply_async(test,(i,))   # 用for 循环  不停的添加进程任务,一共添加十个任务,  
        # poo 里面一共有两个进程,你添加 十个任务, 进程在执行完 0,1 进程任务,再去执行 2,3 任务 ,一次类推 直到执行完毕。 
        #这个就是pool 的优点, 进程任务 不完成 ,他不会退出。  
    pool.close()  # 关闭进程池, 不让添加进程  
    pool.join() # 主函数是不等 子进程的, 所以要用这个,让主进程等待子进程完成。

打印结果为:

这是我-----第0:进程任务----第0:子任务,它的进程号码为13976
这是我-----第1:进程任务----第0:子任务,它的进程号码为9260
这是我-----第0:进程任务----第1:子任务,它的进程号码为13976
这是我-----第1:进程任务----第1:子任务,它的进程号码为9260
这是我-----第0:进程任务----第2:子任务,它的进程号码为13976
这是我-----第1:进程任务----第2:子任务,它的进程号码为9260
这是我-----第0:进程任务----第3:子任务,它的进程号码为13976
这是我-----第1:进程任务----第3:子任务,它的进程号码为9260
这是我-----第0:进程任务----第4:子任务,它的进程号码为13976
这是我-----第1:进程任务----第4:子任务,它的进程号码为9260
这是我-----第2:进程任务----第0:子任务,它的进程号码为13976
这是我-----第3:进程任务----第0:子任务,它的进程号码为9260
这是我-----第2:进程任务----第1:子任务,它的进程号码为13976
这是我-----第3:进程任务----第1:子任务,它的进程号码为9260
这是我-----第2:进程任务----第2:子任务,它的进程号码为13976
这是我-----第3:进程任务----第2:子任务,它的进程号码为9260
这是我-----第2:进程任务----第3:子任务,它的进程号码为13976
这是我-----第3:进程任务----第3:子任务,它的进程号码为9260
这是我-----第2:进程任务----第4:子任务,它的进程号码为13976
这是我-----第3:进程任务----第4:子任务,它的进程号码为9260
这是我-----第4:进程任务----第0:子任务,它的进程号码为13976
这是我-----第5:进程任务----第0:子任务,它的进程号码为9260
这是我-----第4:进程任务----第1:子任务,它的进程号码为13976
这是我-----第5:进程任务----第1:子任务,它的进程号码为9260
这是我-----第4:进程任务----第2:子任务,它的进程号码为13976
这是我-----第5:进程任务----第2:子任务,它的进程号码为9260
这是我-----第4:进程任务----第3:子任务,它的进程号码为13976
这是我-----第5:进程任务----第3:子任务,它的进程号码为9260
这是我-----第4:进程任务----第4:子任务,它的进程号码为13976
这是我-----第5:进程任务----第4:子任务,它的进程号码为9260
这是我-----第6:进程任务----第0:子任务,它的进程号码为13976
这是我-----第7:进程任务----第0:子任务,它的进程号码为9260
这是我-----第6:进程任务----第1:子任务,它的进程号码为13976
这是我-----第7:进程任务----第1:子任务,它的进程号码为9260
这是我-----第6:进程任务----第2:子任务,它的进程号码为13976
这是我-----第7:进程任务----第2:子任务,它的进程号码为9260
这是我-----第6:进程任务----第3:子任务,它的进程号码为13976
这是我-----第7:进程任务----第3:子任务,它的进程号码为9260
这是我-----第6:进程任务----第4:子任务,它的进程号码为13976
这是我-----第7:进程任务----第4:子任务,它的进程号码为9260
这是我-----第8:进程任务----第0:子任务,它的进程号码为13976
这是我-----第9:进程任务----第0:子任务,它的进程号码为9260
这是我-----第8:进程任务----第1:子任务,它的进程号码为13976
这是我-----第9:进程任务----第1:子任务,它的进程号码为9260
这是我-----第8:进程任务----第2:子任务,它的进程号码为13976
这是我-----第9:进程任务----第2:子任务,它的进程号码为9260
这是我-----第8:进程任务----第3:子任务,它的进程号码为13976
这是我-----第9:进程任务----第3:子任务,它的进程号码为9260
这是我-----第8:进程任务----第4:子任务,它的进程号码为13976
这是我-----第9:进程任务----第4:子任务,它的进程号码为9260

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值