Python进程池Pool:让每个进程井然有序
文章目录
- 初步使用
- 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
不必多说,args
为func
的参数列表,对应上面案例中的[i]
,kwds
为参数字典,对于形如下面的func
而言,
def test(a, b):print(a+b)
args
和kwds
的区别如下
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)
其中,callback
和error_callback
和apply_async
中的作用相同,都是迭代之后进行的回调操作。
chunksize
为块尺寸,顾名思义,map_async
会将可迭代参数分成多个区块,进行同时处理,理论上chunksize
越大则处理越快。
close
、terminate
和join
其中
close
阻止后续任务提交到进程池terminate
终止进程池join
等待进程池工作结束
在实际应用中,terminate
可以解决一个痛点问题,即进程池已经开始工作了,突然发现参数设置有误,想要马上停止进程池,这就是terminate
大显身手的时候。
close
和join
一般配合使用,且join
必须要在使用close
或者terminate
之后才能使用,表示等待进程池处理完成。
Python进程池Pool:让每个进程井然有序相关推荐
- python 进程池 freeze_support_Python 多进程并发操作中进程池Pool的实例
在利用Python进行系统管理的时候,特别是同时操作多个文件目录,或者远程控制多台主机,并行操作可以节约大量的时间.当被操作对象数目不大时,可以直接利用multiprocessing中的Process ...
- python全栈开发,Day40(进程间通信(队列和管道),进程间的数据共享Manager,进程池Pool)...
昨日内容回顾 进程 multiprocess Process -- 进程 在python中创建一个进程的模块startdaemon 守护进程join 等待子进程执行结束锁 Lock acquire r ...
- python队列线程池_实例详解:python高级编程之消息队列(Queue)与进程池(Pool)
今天为大家带来的内容是:python高级编程之消息队列(Queue)与进程池(Pool),结合了实例的形式详细分析了Python消息队列与进程池的相关原理.使用技巧与操作注意事项!!! Queue消息 ...
- Python 多进程的进程池pool运行时报错:ValueError: Pool not running
本文仅供学习交流使用,如侵立删!demo下载见文末 Python 多进程的进程池pool运行时报错:ValueError: Pool not running def main(self, num):& ...
- python进程池调用实例方法_Python进程池Pool应用实例分析
本文实例讲述了Python进程池Pool应用.分享给大家供大家参考,具体如下: 当需要创建的子进程数量不多时,可以直接利用multiprocessing中的Process动态成生多个进程,但如果是上百 ...
- python 使用进程池Pool进行并发编程
进程池Pool 当需要创建的子进程数量不多时,可以直接利用multiprocessing中的Process动态成生多个进程,但如果是上百甚至上千个目标,手动的去创建进程的工作量巨大,此时就可以用到mu ...
- python 多进程 multiprocessing 进程池 pool apply_async()函数与apply()函数的用法
apply函数主要用于传递不定参数,主进程会被阻塞到函数执行结束.也就是说只有apply里面的内容被执行完了,才会进行执行主函数的内容. 参考文章1:python进程池Pool的apply与apply ...
- python进程池调用实例方法_Python 多进程并发操作中进程池Pool的实例
在利用Python进行系统管理的时候,特别是同时操作多个文件目录,或者远程控制多台主机,并行操作可以节约大量的时间.当被操作对象数目不大时,可以直接利用multiprocessing中的Process ...
- python 进程池不足_python 进程池pool简单使用
平常会经常用到多进程,可以用进程池pool来进行自动控制进程,下面介绍一下pool的简单使用. 需要主动是,在Windows上要想使用进程模块,就必须把有关进程的代码写if __name__ == ' ...
- python进程池pool_python多任务--进程池Pool
进程池Pool 在利用Python进行系统管理的时候,特别是同时操作多个文件目录,或者远程控制多台主机,并行操作可以节约大量的时间.当被操作对象数目不大时,可以直接利用multiprocessing中 ...
最新文章
- java子类参数传递给父类_java – 为什么调用将父类作为参数的方法调用,而不是将子类作为参数获取的方法?...
- php折线图 布局图
- NDK 与 JNI 的关系
- 限制用户不允许输入中文字符
- 文件上传api——MultipartFile
- tencent intern learning
- C/C++拾遗(二)
- leetcode530. 二叉搜索树的最小绝对差
- 2016 - 2- 2 非正式协议与正式协议
- OpenShift - 用CodeReady开发云原生应用(1)- 将可执行Quarkus应用部署到OpenShift
- windows 2012 非pdc DC强行重置NTP
- 链式编程在Java 中的应用
- 【BZOJ-4556】字符串 后缀数组+二分+主席树 / 后缀自动机+线段树合并+二分
- ffmpeg源码简析(十三)ffmpeg API变更 2009-03-01—— 2017-05-09变更
- PowerDesigner破解版下载及安装教程
- 云服务器到底是什么?云服务器的优势有哪些
- 基于EGE的双人象棋
- 运行CCleaner时出现问题
- 豆瓣商业化:小清新文艺范必须远离铜臭?
- 【大论文】可扩展机器学习的并行与分布式优化算法综述_亢良伊2017
热门文章
- linux下ad数模转换驱动程序设计,iTOP-4412开发板实现3路ADC数模转换驱动例程
- 如何选择健身房管理系统捷径系统?
- python — 用 pickle 保存 dict 对象时报错:TypeError: a class that defines __slots__ without defining ...
- 目标检测中图片预处理之图片大小分析
- pdb unplug plug测试
- #TCP/IP# TCP头部选项功能详解
- 模式识别_字符识别算法设计
- 淡淡的生活,淡淡的爱......
- LUTU科技-Android 环境模式 Ambient Mode 手机变智能屏幕列出重要资讯
- js获取当天的开始时间和结束时间