当前位置: 代码迷 >> 综合 >> python高级进阶_19_快速理解python进程池(pool)
  详细解决方案

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

热度:94   发布时间:2023-10-24 20:12:08.0

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

进程池也是创建进程的, 和前面 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

  相关解决方案