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 ...
随机推荐
- 使用Angular CLI生成路由
第一篇文章是: "使用angular cli生成angular5项目" : http://www.cnblogs.com/cgzl/p/8594571.html 第二篇文章是: & ...
- windows下安装Virtualenvwrapper
windows下安装Virtualenvwrapper 我们可以使用Virtualenvwrapper来方便地管理python虚拟环境,但是在windows上安装的时候.....直接 install ...
- FxCop卸载后依然生成文件夹的问题
在 http://www.cnblogs.com/heroius/p/8270004.html 中,通过编辑csproj文件可以移除对旧版nuget独立程序的依赖. 实际上,通过编辑项目文件的方式可以 ...
- mysql主从复制安装详解
1.环境准备:两台Linux6.8服务器,(可以通过yum安装mysql:yum install mysql mysql-server -y,安装的版本可能比较低,对于练手来说够用了 )主库ip:19 ...
- Jmeter----基本介绍(1)
1.Jmeter 基本介绍 简单的说,就是Jmeter能做 功能测试 和 性能测试 .它能够对HTTP和FTP服务器进行压力和性能测试, 也可以对任何数据库进行同样的测试,还能以多种形式展现测试结果. ...
- 面试长谈的String,StringBuffer,StringBuilder三兄弟有啥区别
1.String: /** Strings are constant; their values cannot be changed after they * are created. String ...
- 数据库 --> MySQL存储引擎介绍
MySQL存储引擎介绍 MyISAM是MySQL的默认数据库引擎(5.5版之前),由早期的ISAM(Indexed Sequential Access Method:有索引的顺序访问方法)所改良.虽然 ...
- mysql学习第一天
Mysql语句语法 一.数据库定义语句(DDL) 1.alter database 语法 alter database 用于更改数据库的全局特性,这些特性存储在数据库目录中的db.opt文件中.要使用 ...
- 中文分词 sphni与scws
1.安装sphnixcd /usr/local/srcwget http://sphinxsearch.com/files/sphinx-2.2.11-release.tar.gztar -zxvf ...
- 四十六、android中的Bitmap
四十六.android中的Bitmap: http://www.cnblogs.com/linjiqin/archive/2011/12/28/2304940.html 四十七.实现调用Android ...