python中的进程池:multiprocessing.Pool()
python中的进程池:
我们可以写出自己希望进程帮助我们完成的任务,然后把任务批量交给进程池
进程池帮助我们创建进程完成任务,不需要我们管理。 进程池:利用multiprocessing 下的Pool能够创建进程池
Pool(n) 传入一个n能够开一个能容纳n个进程任务的进程池。
如果不传入参数,或者传入负数 能开一个动态控制大小的进程池 具体的使用方法如下:提醒大家要认真看注释
from multiprocessing import Pool
import os,time,random
#绑定给进程工作的函数
def work(num):
t1 = time.time()
print("阻塞%s开始,pid:%s"%( num , os.getpid() ))
time.sleep(random.random()*2)
t2 = time.time()
print("阻塞%s结束,消耗时间%.2f"%( num,t2 - t1 )) def work2(num):
t1 = time.time()
print("非阻塞%s开始,pid:%s" % (num, os.getpid()))
time.sleep(random.random() * 4)
t2 = time.time()
print("非阻塞%s结束,消耗时间%.2f" % (num, t2 - t1)) if __name__ == "__main__":
# p = Pool(3) #开启一个能开三个任务进程的进程池
# for i in range(10):
# #非阻塞的调用func,第二个参数是进程帮我们调用work的时候调的参数表
# #p.apply_async( work , (i,))
# #以阻塞的形式产生进程任务,生成一个任务进程,等它执行完出池第二个进程才会闯进进池,主进程一直在这里阻塞等待
# p.apply( work,(i,) )
# print(i)
# print("开始") p = Pool(50)
for i in range(20):
# 非阻塞提交,我们发现,直接丢20个任务给进程池,
# 主进程就不管了,会继续向下执行代码,进程池帮我们管理,把20个执行完
p.apply_async(work2, (i,) ) for i in range(10):
p.apply(work , (i, ) ) #关闭进程池,不再接收其他任务
p.close() # join就是阻塞等待所有任务执行完再继续
#主进程会卡在这里,等所有进程结束再继续执行
#一定更要先关闭进程池 才能阻塞等待
p.join()
print("结束")
python中的进程池:multiprocessing.Pool()的更多相关文章
- python中的进程池
1.进程池的概念 python中,进程池内部会维护一个进程序列.当需要时,程序会去进程池中获取一个进程. 如果进程池序列中没有可供使用的进程,那么程序就会等待,直到进程池中有可用进程为止. 2.进程池 ...
- Python中的进程池与线程池(包含代码)
Python中的进程池与线程池 引入进程池与线程池 使用ProcessPoolExecutor进程池,使用ThreadPoolExecutor 使用shutdown 使用submit同步调用 使用su ...
- Python进程池multiprocessing.Pool的用法
一.multiprocessing模块 multiprocessing模块提供了一个Process类来代表一个进程对象,multiprocessing模块像线程一样管理进程,这个是multiproce ...
- python中的进程池和线程池
Python标准模块-concurrent.futures #1 介绍 concurrent.futures模块提供了高度封装的异步调用接口 ThreadPoolExecutor:线程池,提供异步调用 ...
- python进程池multiprocessing.Pool和线程池multiprocessing.dummy.Pool实例
进程池: 进程池的使用有四种方式:apply_async.apply.map_async.map.其中apply_async和map_async是异步的,也就是启动进程函数之后会继续执行后续的代码不用 ...
- 【python小随笔】进程池 multiprocessing.Pool的简单实现与踩过的坑
#导入进程模块 import multiprocessing #创建进程池 坑:一定要在循环外面创建进程池,不然会一直创建 pool = multiprocessing.Pool(30) for Si ...
- Python中的进程池与线程池
引入进程池与线程池 使用ProcessPoolExecutor进程池,使用ThreadPoolExecutor 使用shutdown 使用submit同步调用 使用submit异步调用 异步+回调函数 ...
- Python程序中的进程操作-进程池(multiprocess.Pool)
目录 一.进程池 二.概念介绍--multiprocess.Pool 三.参数用法 四.主要方法 五.其他方法(了解) 六.代码实例--multiprocess.Pool 6.1 同步 6.2 异步 ...
- python中的进程、线程(threading、multiprocessing、Queue、subprocess)
Python中的进程与线程 学习知识,我们不但要知其然,还是知其所以然.你做到了你就比别人NB. 我们先了解一下什么是进程和线程. 进程与线程的历史 我们都知道计算机是由硬件和软件组成的.硬件中的CP ...
随机推荐
- 世界上最好的语言搭建短链接及统计功能(附API代码)
前言 在这个营销的时代,短链接和二维码是企业进行营销中非常重要的工具,不仅仅是缩短了链接,而且还可以通过扩展获得更多的数据,诸如点击数.下载量.来源以及时间等等. 网上搜寻了一下比较有名有U.NU和0 ...
- Python 基础语法复习
由于选修了<人工智能模式识别>的课程,要求用phthon来实现算法,乘着周三晚上没课,就来回顾一下python的主要语法. 环境: Anaconda Python3.6 1.变量 ...
- 10个技巧优化PHP程序Laravel 5框架
10个技巧优化PHP程序Laravel 5框架 性能一直是 Laravel 框架为人诟病的一个点,所以调优 Laravel 程序算是一个必学的技能. 接下来分享一些开发的最佳实践www.itxdl.c ...
- struts2基于注解配置action
如果使用struts2,就需要配置文件或者注解,关于struts2的配置文件struts.xml非常熟悉,对于注解可能spring使用的比较多.配置文件的繁琐衬托出了注解的简洁方便,一条或者几条注解解 ...
- vue实现懒加载的几种方法
vue实现惰性加载是基于: 1.ES6的异步机制 components: { comp: (resolve, reject) => {} } 2. webpack的代码分割功能 require. ...
- paho.mqtt.c打印日志
mqtt中自身就带有日志系统Log.h和Log.c,这些日志文件是在客户端调用MQTTClient_create函数是初始化的,MQTTClient_create源码如下: int MQTTClien ...
- 【Python】 压缩文件处理 zipfile & tarfile
[zipfile] 虽然叫zipfile,但是除了zip之外,rar,war,jar这些压缩(或者打包)文件格式也都可以处理. zipfile模块常用的一些操作和方法: is_zipfile(file ...
- Android学习笔记1——开发环境配置
一.JDK配置 Android是基于Java进行开发的,首先需要在电脑上配置JDK(Java Development Kit).在http://www.androiddevtools.cn/下载对应系 ...
- STL --> set用法
set用法 一.set和multiset基础 set和multiset会根据特定的排序准则,自动将元素进行排序.不同的是后者允许元素重复而前者不允许. 需要包含头文件: #include <se ...
- alpha-咸鱼冲刺day5-紫仪
总汇链接 一,合照 emmmmm.自然还是没有的. 二,项目燃尽图 三,项目进展 !!!QAQ可以做到跟数据库交互了!!!!先来撒花花!(然后继续甲板) 四,问题困难 日常啥都不会,百度真心玩一年 ...