进程池子当你成千上万的业务需要创建成千上万的进程时,我们可以提前定义一个进程池from multiprocessing import Poolp = Pool(10) #进程池创建方式,类似空任务队列p.apply(func,args) #阻塞func:func指明该进程...

进程池子
当你成千上万的业务需要创建成千上万的进程时,我们可以提前定义一个进程池
from multiprocessing import Pool
- p = Pool(10) #进程池创建方式,类似空任务队列
p.apply(func,args) #阻塞- func:func指明该进程池种的进程要工作的函数
args:不定长接收进程池中进程工作函数的参数
p.apply_async(func,args) #非阻塞方式
- func:func指明该进程池种的进程要工作的函数
func:func指明该进程池种的进程要工作的函数
args:不定长接收进程池中进程工作函数的参数
p.close()关闭进程池,不再接收新的任务了。
p.join() **
进程池里的进程资源要在关闭进程之后回收
阻塞:单进程 | 串行 | 同步 | 多个进程可以排着队
apply
同一时间只能有一个进程来工作,其他进程等待这个进程的工作函数有了返回结果才能开启工作。
非阻塞:多进程 | 并发 | 异步
apply_async
会在CPU核心数的基础上立即调用所有可用进程池中的进程资源来工作apply:
获取子进程返回值 直接获取这个函数的返回值即可
for var in range(12): res.append(p.apply(func=work,args=(var,)))
ret = apply_async
非阻塞多进程执行之后返回的是一个抽象的进程返回结果
我们需要再次对这个进程返回结果再实际获取才可以拿到进程池工作之后的返回值ret.get() 拿到进程池进程执行之后的返回结果
避免了进程多次创建而带来的效率上的损耗
- p = Pool(10) #进程池创建方式,类似空任务队列
本文标题为:python 进程池pool


基础教程推荐
- 远程和Ubuntu服务器进行Socket通信,使用python和C#(准备篇) 2023-09-05
- linux 安装 python3 2023-09-03
- Python+OpenCV实战之实现文档扫描 2022-10-20
- Python爬虫爬取属于自己的地铁线路图 2023-08-05
- MySQL数据优化-多层索引 2023-08-11
- 使用Pycharm创建一个Django项目的超详细图文教程 2022-09-02
- 云服务器Ubuntu更改默认python版本 2023-09-03
- python验证多组数据之间有无显著差异 2023-08-08
- 创建python虚拟环境(在ubuntu16.04中) 2023-09-04
- windows下面使用多版本Python安装指定版本的虚拟环境 2023-09-04