在前面的博客我也写了什么是池子, 池子就是里面的东西给你准备好了,你直接用就行了,相当于缓存。
进程池也是创建进程的, 和前面 Process 类,Process 子类差别很大,
- 进程池 可以一次创建多个进程,并且可以执行多个任务
- 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