python 进程池pool
进程池子
当你成千上万的业务需要创建成千上万的进程时,我们可以提前定义一个进程池
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() 拿到进程池进程执行之后的返回结果
避免了进程多次创建而带来的效率上的损耗
python 进程池pool的更多相关文章
- python 进程池pool简单使用
平常会经常用到多进程,可以用进程池pool来进行自动控制进程,下面介绍一下pool的简单使用. 需要主动是,在Windows上要想使用进程模块,就必须把有关进程的代码写if __name__ == ‘ ...
- python 进程池Pool以及Queue的用法
import os,time,random from multiprocessing import Pool def task(name): print('正在运行的任务:%s,PID:(%s)'%( ...
- Python进程池Pool
''' 进程池,启动一个进程就要克隆一份数据,假设父进程1G,那么启动进程开销很大 避免启动太多造成系统瘫痪,就有进程池,即同一时间允许的进程数量 ps:线程没有池,因为线程启动开销小,线程有类似信号 ...
- python 进程池Pool的apply_async方法以及一些需要注意的地方
在写多进程的时候我发现一个问题,用Pool的apply_async(异步非阻塞)的时候传入实例函数会出错,或者说是子进程被跳过似的感觉(python2.7). 但是用python3.7的话没有任何问题 ...
- python进程池pool的starmap的使用
#!/usr/bin/env python3 from functools import partial from itertools import repeat from multiprocessi ...
- Python多进程库multiprocessing创建进程以及进程池Pool类的使用
问题起因最近要将一个文本分割成好几个topic,每个topic设计一个regressor,各regressor是相互独立的,最后汇总所有topic的regressor得到总得预测结果.没错!类似bag ...
- python进程池:multiprocessing.pool
本文转至http://www.cnblogs.com/kaituorensheng/p/4465768.html,在其基础上进行了一些小小改动. 在利用Python进行系统管理的时候,特别是同时操作多 ...
- [转]Python多进程并发操作中进程池Pool的应用
Pool类 在使用Python进行系统管理时,特别是同时操作多个文件目录或者远程控制多台主机,并行操作可以节约大量的时间.如果操作的对象数目不大时,还可以直接使用Process类动态的生成多个进程,十 ...
- Python多进程并发操作中进程池Pool的应用
Pool类 在使用Python进行系统管理时,特别是同时操作多个文件目录或者远程控制多台主机,并行操作可以节约大量的时间.如果操作的对象数目不大时,还可以直接使用Process类动态的生成多个进程,十 ...
随机推荐
- springMVC上传文件简单案例
html <form name="Form2" action="/SpringMVC006/fileUpload2" method="post& ...
- gulp学习笔记-怎样做一个gulp-demo
第一步:在文件夹内:鼠标右键+shift 选择提示窗口中的 在此处打开命令窗口 第二步:创建npm的配置文件,在命令窗口中输入 npm init 进行npm的配置 npm init gulp-d ...
- 【虚拟机ubuntu设置ssh】ssh连不上问题解决方法
首先,确保server端的ssh服务是开的(service shhd start) 然后在client端输入: ssh usrname@serverip (远程登录) scp filename usr ...
- Netty 启动过程源码分析 (本文超长慎读)(基于4.1.23)
前言 作为一个 Java 程序员,必须知道Java社区最强网络框架-------Netty,且必须看过源码,才能说是了解这个框架,否则都是无稽之谈.今天楼主不会讲什么理论和概念,而是使用debug 的 ...
- [转]How to speed up Magento 2. Maximum Performance
本文转自:https://magedirect.co/how-to-speed-up-magento-2-maximum-performance/ Introduction In this artic ...
- MVC实现删除数据库记录
本次MVC练习,我们想实现对数据库的记录进行删除.在网页的记录列表上,点击删除,将带到另外一个详细页面,显示详细的信息,让用户对删除的信息进行确认,再点击删除动作.不管怎样,得先在数据库创建一个删除的 ...
- [日常] Go语言圣经--复合数据类型,数组习题
go语言圣经-复合数据类型 1.以不同的方式组合基本类型可以构造出来的复合数据类型 2.四种类型——数组.slice.map和结构体 3.数组是由同构的元素组成——每个数组元素都是完全相同的类型——结 ...
- java自动生成代码
看到这个标题,如果你以为真的可以完全自动生成,那你就太Naive啦 我这里想介绍的是,利用模板生成我们需要的代码 一.模板 首先来说说模板,常见的java模板有:FreeMarker.Velocity ...
- Java - equals方法
java提高篇(十三)-----equals()方法总结 equal和==区别 ==比较对象基于内存引用,两个引用完全相同返回true Java 语言里的 equals方法其实是交给开发者去覆写的,让 ...
- Java对MySQL数据库进行连接、查询和修改(转)
Java对MySQL数据库进行连接.查询和修改 0. 一般过程: (1) 调用Class.forName()方法加载驱动程序. (2) 调用DriverManager对象的getConnection( ...