文章目录

  • 初步使用
  • apply_async
  • map_async
  • `close`、`terminate`和`join`

如果疯狂地弹进程,很容易导致内存爆炸,所以非常有必要设计一种功能,可以限定同时运行的进程数,这就是进程池。

初步使用

举一个最简单的例子,

from multiprocessing import Pooldef test(N):print(N)if __name__ == '__main__':p = Pool(5)for i in range(10):p.apply_async(func=test, [i])p.close()

这里面p就是最多容量为5的一个进程池,apply_async表示将func压入进程池,当进程数达到5个时,发生阻塞,之后每完成一个进程,就添加一个进程,直到所有进程都已经装入进程池。

apply_async

显而易见,线程池中最为关键的方法就是apply_async, 除了参数func代表将要执行的进程之外,还有其他可选参数,整体上apply_async的调用方法如下

apply_async(func, args, kwds, callback, error_callback)

其中,func不必多说,argsfunc的参数列表,对应上面案例中的[i]kwds为参数字典,对于形如下面的func而言,

def test(a, b):print(a+b)

argskwds的区别如下

p.apply_async(func=test, args=[1,2])
p.apply_async(func=test, kwds={'a':1, 'b':2})

此外,callback表示,当进程执行完毕后的回调函数,error_callback表示当进程出现错误时的回调函数。

map_async

如想理解map_async,最好先复习一下Python中map的用法。map就是根据提供的函数对可迭代对象进行迭代操作,res = map(func, iters)就等价于res = [func(i) for i in iters]

相应地,map_async的关键参数同样为func, iterable,其具体参数如下

map_async(func, iterable, chunksize, callback, error_callback)

其中,callbackerror_callbackapply_async中的作用相同,都是迭代之后进行的回调操作。

chunksize为块尺寸,顾名思义,map_async会将可迭代参数分成多个区块,进行同时处理,理论上chunksize越大则处理越快。

closeterminatejoin

其中

  • close 阻止后续任务提交到进程池
  • terminate 终止进程池
  • join 等待进程池工作结束

在实际应用中,terminate可以解决一个痛点问题,即进程池已经开始工作了,突然发现参数设置有误,想要马上停止进程池,这就是terminate大显身手的时候。

closejoin一般配合使用,且join必须要在使用close或者terminate之后才能使用,表示等待进程池处理完成。

Python进程池Pool:让每个进程井然有序相关推荐

  1. python 进程池 freeze_support_Python 多进程并发操作中进程池Pool的实例

    在利用Python进行系统管理的时候,特别是同时操作多个文件目录,或者远程控制多台主机,并行操作可以节约大量的时间.当被操作对象数目不大时,可以直接利用multiprocessing中的Process ...

  2. python全栈开发,Day40(进程间通信(队列和管道),进程间的数据共享Manager,进程池Pool)...

    昨日内容回顾 进程 multiprocess Process -- 进程 在python中创建一个进程的模块startdaemon 守护进程join 等待子进程执行结束锁 Lock acquire r ...

  3. python队列线程池_实例详解:python高级编程之消息队列(Queue)与进程池(Pool)

    今天为大家带来的内容是:python高级编程之消息队列(Queue)与进程池(Pool),结合了实例的形式详细分析了Python消息队列与进程池的相关原理.使用技巧与操作注意事项!!! Queue消息 ...

  4. Python 多进程的进程池pool运行时报错:ValueError: Pool not running

    本文仅供学习交流使用,如侵立删!demo下载见文末 Python 多进程的进程池pool运行时报错:ValueError: Pool not running def main(self, num):& ...

  5. python进程池调用实例方法_Python进程池Pool应用实例分析

    本文实例讲述了Python进程池Pool应用.分享给大家供大家参考,具体如下: 当需要创建的子进程数量不多时,可以直接利用multiprocessing中的Process动态成生多个进程,但如果是上百 ...

  6. python 使用进程池Pool进行并发编程

    进程池Pool 当需要创建的子进程数量不多时,可以直接利用multiprocessing中的Process动态成生多个进程,但如果是上百甚至上千个目标,手动的去创建进程的工作量巨大,此时就可以用到mu ...

  7. python 多进程 multiprocessing 进程池 pool apply_async()函数与apply()函数的用法

    apply函数主要用于传递不定参数,主进程会被阻塞到函数执行结束.也就是说只有apply里面的内容被执行完了,才会进行执行主函数的内容. 参考文章1:python进程池Pool的apply与apply ...

  8. python进程池调用实例方法_Python 多进程并发操作中进程池Pool的实例

    在利用Python进行系统管理的时候,特别是同时操作多个文件目录,或者远程控制多台主机,并行操作可以节约大量的时间.当被操作对象数目不大时,可以直接利用multiprocessing中的Process ...

  9. python 进程池不足_python 进程池pool简单使用

    平常会经常用到多进程,可以用进程池pool来进行自动控制进程,下面介绍一下pool的简单使用. 需要主动是,在Windows上要想使用进程模块,就必须把有关进程的代码写if __name__ == ' ...

  10. python进程池pool_python多任务--进程池Pool

    进程池Pool 在利用Python进行系统管理的时候,特别是同时操作多个文件目录,或者远程控制多台主机,并行操作可以节约大量的时间.当被操作对象数目不大时,可以直接利用multiprocessing中 ...

最新文章

  1. java子类参数传递给父类_java – 为什么调用将父类作为参数的方法调用,而不是将子类作为参数获取的方法?...
  2. php折线图 布局图
  3. NDK 与 JNI 的关系
  4. 限制用户不允许输入中文字符
  5. 文件上传api——MultipartFile
  6. tencent intern learning
  7. C/C++拾遗(二)
  8. leetcode530. 二叉搜索树的最小绝对差
  9. 2016 - 2- 2 非正式协议与正式协议
  10. OpenShift - 用CodeReady开发云原生应用(1)- 将可执行Quarkus应用部署到OpenShift
  11. windows 2012 非pdc DC强行重置NTP
  12. 链式编程在Java 中的应用
  13. 【BZOJ-4556】字符串 后缀数组+二分+主席树 / 后缀自动机+线段树合并+二分
  14. ffmpeg源码简析(十三)ffmpeg API变更 2009-03-01—— 2017-05-09变更
  15. PowerDesigner破解版下载及安装教程
  16. 云服务器到底是什么?云服务器的优势有哪些
  17. 基于EGE的双人象棋
  18. 运行CCleaner时出现问题
  19. 豆瓣商业化:小清新文艺范必须远离铜臭?
  20. 【大论文】可扩展机器学习的并行与分布式优化算法综述_亢良伊2017

热门文章

  1. linux下ad数模转换驱动程序设计,iTOP-4412开发板实现3路ADC数模转换驱动例程
  2. 如何选择健身房管理系统捷径系统?
  3. python — 用 pickle 保存 dict 对象时报错:TypeError: a class that defines __slots__ without defining ...
  4. 目标检测中图片预处理之图片大小分析
  5. pdb unplug plug测试
  6. #TCP/IP# TCP头部选项功能详解
  7. 模式识别_字符识别算法设计
  8. 淡淡的生活,淡淡的爱......
  9. LUTU科技-Android 环境模式 Ambient Mode 手机变智能屏幕列出重要资讯
  10. js获取当天的开始时间和结束时间