进程池可以减轻多进程对CPU的负担

把一个进程序列放入进程池,使用的时候,就会在进程池中取进程
如果进程池中没有进程了,脚本就会等待,直到进程池中有可用进程

进程池生成的子线程,不能直接运行,要放入进程池后才可以运行

串行

下面这个例子是一个串行的进程池,

通过for循环生成了14个子进程,但是进程池只允许5个进程

运行情况是这样的:

把生成的14个子进程的前5个进程放入进程池,进程池按照串行一个一个地执行这5个进程,每当这5个进程有一个执行完的时候,后面剩下的9个子进程就会放入一个进程到进程池里

# -*- coding:utf-8 -*-
__author__ = "MuT6 Sch01aR" from multiprocessing import Pool
import time,os def Test(i):
time.sleep(2)
print ("In process",i,":",os.getpid()) if __name__ == '__main__':
pool = Pool(processes=5) #允许进程池同时放入5个进程,并让cpu运行这5个进程 for i in range(14):
pool.apply(func=Test,args=(i,)) #串行 print("Processes Run over") pool.close()
pool.join()
#进程池中要先close再join

运行结果

并行

运行情况:

把生成的14个子进程的前5个进程放入进程池,进程池按照并行同时执行5个进程,每当这5个进程有一个执行完的时候,后面剩下的9个子进程就会放入一个进程到进程池里,再同时执行5个进程

# -*- coding:utf-8 -*-
__author__ = "MuT6 Sch01aR" from multiprocessing import Pool
import time,os def Test(i):
time.sleep(2)
print ("In process",i,":",os.getpid()) if __name__ == '__main__':
pool = Pool(processes=5) #允许进程池同时放入5个进程,并让cpu运行这5个进程 for i in range(14):
pool.apply_async(func=Test,args=(i,)) #并行 print("Processes Running") pool.close()
pool.join()
#进程池中要先close再join,如果没有join的话脚本就会停止运行

运行

因为前5个进程是同时开始执行也是同时执行完的,所以后面来的进程也是同时5个传入,同时执行

并行进程池中的回调

# -*- coding:utf-8 -*-
__author__ = "MuT6 Sch01aR" from multiprocessing import Pool
import time,os def Test(i):
time.sleep(2)
print ("In process",i,":",os.getpid())
return i def Back(n):
print("Process",n,":-------<",os.getpid(),">--------") if __name__ == '__main__':
pool = Pool(processes=5) #允许进程池同时放入5个进程,并让cpu运行这5个进程 for i in range(14):
pool.apply_async(func=Test,args=(i,),callback=Back) #callback为回调函数,每个进程执行完,执行callback的回调函数 print("主进程的进程号:",os.getpid()) pool.close()
pool.join()
#进程池中要先close再join,如果没有join的话脚本就会停止运行

运行

进程池中的回调函数是主进程启动执行的,所以进程号是一样的

Python多进程-进程池的更多相关文章

  1. day12学python 多进程+进程池

    多进程+进程池 多进程(不同进程不可直接访问数据) 引入(多进程套线程) 多进程 需导入multiprocessing模块 模板示例1 import threading,time,multiproce ...

  2. Python 多进程进程池Queue进程通信

    from multiprocessing import Pool,Manager import time def hanshu(queue,a): n = 1 while n<50: # pri ...

  3. python使用进程池多进程时,如何打印错误信息

    一.说明 1.python进程池进行多进程运行时,如果有错误,该进程会直接跳过,并且不会打印错误信息. 2.如果需要了解到进程内的错误信息,此时就需要通过捕获异常来输出错误信息了. 二.具体方法如下: ...

  4. 网络编程并发 多进程 进程池,互斥锁,信号量,IO模型

    进程:程序正在执行的过程,就是一个正在执行的任务,而负责执行任务的就是cpu 操作系统:操作系统就是一个协调.管理和控制计算机硬件资源和软件资源的控制程序. 操作系统的作用: 1:隐藏丑陋复杂的硬件接 ...

  5. python多进程并发进程池Pool

    简介: python中的多进程主要使用到 multiprocessing 这个库.低版本python这个库在使用 multiprocessing.Manager().Queue时会出问题,建议大家升级 ...

  6. python 36 进程池、线程池

    目录 1. 死锁与递归锁 2. 信号量Semaphor 3. GIL全局解释器锁:(Cpython) 4. IO.计算密集型对比 4.1 计算密集型: 4.2 IO密集型 5. GIL与Lock锁的区 ...

  7. python中进程池和回调函数

    一.数据共享 1.进程间的通信应该尽量避免共享数据的方式 2.进程间的数据是独立的,可以借助队列或管道实现通信,二者都是基于消息传递的. 虽然进程间数据独立,但可以用过Manager实现数据共享,事实 ...

  8. python3多进程 进程池 协程并发

    一.进程           我们电脑的应用程序,都是进程,进程是资源分配的单位.进程切换需要的资源最大,效率低.         进程之间相互独立         cpu密集的时候适合用多进程 #多 ...

  9. python之进程池与线程池

    一.进程池与线程池介绍 池子使用来限制并发的任务数目,限制我们的计算机在一个自己可承受的范围内去并发地执行任务 当并发的任务数远远超过了计算机的承受能力时,即无法一次性开启过多的进程数或线程数时就应该 ...

随机推荐

  1. 【P2476】着色方案(记忆化搜索+特殊的DP数组)

    这个题代码难度几乎为0,然而思维难度对于蒟蒻来说简直是突破天际啊!首先我思考的是这个油漆的种类只有15种,是不是可以像一道叫做8数码难题的东西暴力15维数组呢..计算发现不可以....空间会直接让你学 ...

  2. 移动端的坑 之 在可编辑的div中实现placeholder

    1.当我们个  div 设置了 contenteditable = "true" 这个块状元素就可以编辑了, 如果要实现 placeholder 直接写上去是没有效果的 <d ...

  3. BZOJ2878 [Noi2012]迷失游乐园

    本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000 作者博客:http://www.cnblogs.com/ljh2000-jump/ ...

  4. 彻底弄清python的切片

    lis = range(100) # [0, 1, 2, 3, ..., 99] # 取前10个 lis[:10] # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] # 取后10个 l ...

  5. python快速学习-常用內建模块

  6. 编写TreeSet类的实现程序,其中相关的迭代器使用二叉查找树

    package com.test.tree; import java.util.Iterator; /** * 编写TreeSet类的实现程序,其中相关的迭代器使用二叉查找树. * 在每个节点上添加一 ...

  7. java文件读写常用方法

    // TODO Auto-generated method stub //File file = new File("D:\\Android\\workspace\\Practice1\\s ...

  8. mysql 注意事项

    1. mysql所有的存储引擎均不支持check约束,但可以使用check约束,而没有任何效果

  9. //封装tabs函数

    //封装tabs函数function tabs(tabTit,on,tabCon){ $(tabCon).each(function(){ $(this).children().eq(0).show( ...

  10. 剑指offer--6.数值的整数次方

    时间限制:1秒 空间限制:32768K 热度指数:362909 题目描述 给定一个double类型的浮点数base和int类型的整数exponent.求base的exponent次方. class S ...