Python线程池模块ThreadPoolExecutor用法分析


Posted in Python onDecember 28, 2018

本文实例讲述了Python线程池模块ThreadPoolExecutor用法。分享给大家供大家参考,具体如下:

python3内置的有Threadingpool和ThreadPoolExecutor模块,两个都可以做线程池,当然ThreadPoolExecutor会更好用一些,而且也有ProcessPoolExecutor进程池模块,使用方法基本一致。

首先导入模块

from concurrent.futures import ThreadPoolExecutor

使用方法很简单,最常用的可能就是map方法和submit+as_completed

注意,一定要使用with,而不要使用for,如果你一定要用for,那么一定要手动进行executor.shutdown,而你使用了with方法的话,再with方法内部已经实现了wait(),在使用完毕之后可以自行关闭线程池,减少资源浪费。

使用map

with ThreadPoolExecutor(max_workers=2) as executor:
  result = executor.map(map_fun, itr_arg)
  '''map_fun:你传入的要执行的map函数
    itr_arg:一个可迭代的参数,可以是列表字典等可迭代的对象
    基本上和python的map函数一样
    注意result并不是你map_fun返回的结果,而是一个生成器,如果要从中去结果,你可以使用列表生成式或者其他你想使用的方法
  '''
  for res in result:
    print(res) #这个res就是你map_fun返回的结果,你可以在这里做进一步处理

使用submit+as_completed也可以很灵活

with ThreadPoolExecutor(max_workers=2) as executor:
  future= executor.submit(fun, args)
  '''
  在这里你可以使用for循环来做,返回的是一个future对象
  future_list=[]
  for i in range(max_workers):
    future= executor.submit(fun, args[i])
    future_list.append(future)
  '''
  for res in ac_completed(futrue_list): #这个futrure_list是你future对象的列表
    print(res.result())        #循环遍历时用.result()来取返回值

两种方式差不多,都可以很好的实现多线程任务,切记一定使用with!

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
python使用urllib模块和pyquery实现阿里巴巴排名查询
Jan 16 Python
零基础学Python(一)Python环境安装
Aug 20 Python
Python连接mssql数据库编码问题解决方法
Jan 01 Python
Python自动化运维和部署项目工具Fabric使用实例
Sep 18 Python
Python多进程与服务器并发原理及用法实例分析
Aug 21 Python
对python 合并 累加两个dict的实例详解
Jan 21 Python
Python Django给admin添加Action的方法实例详解
Apr 29 Python
python实现ip地址查询经纬度定位详解
Aug 30 Python
Python手绘可视化工具cutecharts使用实例
Dec 05 Python
Django Admin设置应用程序及模型顺序方法详解
Apr 01 Python
python求numpy中array按列非零元素的平均值案例
Jun 08 Python
python使用正则表达式匹配txt特定字符串(有换行)
Dec 09 Python
Python实现的逻辑回归算法示例【附测试csv文件下载】
Dec 28 #Python
python 检查是否为中文字符串的方法
Dec 28 #Python
浅谈python3发送post请求参数为空的情况
Dec 28 #Python
python3使用flask编写注册post接口的方法
Dec 28 #Python
python通过tcp发送xml报文的方法
Dec 28 #Python
对python 生成拼接xml报文的示例详解
Dec 28 #Python
Python 3.x基于Xml数据的Http请求方法
Dec 28 #Python
You might like
让你成为更出色的PHP开发者的10个技巧
2011/02/25 PHP
详细解读PHP的Yii框架中登陆功能的实现
2015/08/21 PHP
php数组函数array_walk用法示例
2016/05/26 PHP
Laravel 之url参数,获取路由参数的例子
2019/10/21 PHP
多种方式实现JS调用后台方法进行数据交互
2013/08/20 Javascript
JS比较两个时间大小的简单示例代码
2013/12/20 Javascript
JS实现仿雅虎首页快捷登录入口及导航模块效果
2015/09/19 Javascript
jquery中object对象循环遍历的方法
2015/12/18 Javascript
使用BootStrap实现用户登录界面UI
2016/08/10 Javascript
Bootstrap基本插件学习笔记之轮播幻灯片(23)
2016/12/08 Javascript
react native与webview通信的示例代码
2017/09/25 Javascript
React Native中Navigator的使用方法示例
2017/10/13 Javascript
基于layui框架响应式布局的一些使用详解
2019/09/16 Javascript
Weex开发之WEEX-EROS开发踩坑(小结)
2019/10/16 Javascript
javascript实现留言板功能
2020/02/08 Javascript
Vue执行方法,方法获取data值,设置data值,方法传值操作
2020/08/05 Javascript
详解JavaScript中分解数字的三种方法
2021/01/05 Javascript
基于python元祖与字典与集合的粗浅认识
2017/08/23 Python
理想高通滤波实现Python opencv示例
2019/01/30 Python
python3.6.8 + pycharm + PyQt5 环境搭建的图文教程
2020/06/11 Python
python 判断一组数据是否符合正态分布
2020/09/23 Python
python实现无边框进度条的实例代码
2020/12/30 Python
a标签下载链接的简单实现
2016/09/13 HTML / CSS
山海经纬软件测试笔试题和面试题
2013/04/02 面试题
旅游管理本科生求职信
2013/10/14 职场文书
优秀应届生推荐信
2013/11/09 职场文书
行政工作个人的自我评价
2014/02/13 职场文书
六一亲子活动总结
2014/07/01 职场文书
会计试用期自我评价
2014/09/19 职场文书
2014年环保局工作总结
2014/12/11 职场文书
质量保证书格式
2015/02/27 职场文书
部门2015年度工作总结
2015/04/29 职场文书
go语言map与string的相互转换的实现
2021/04/07 Golang
R9700摩机记
2022/04/05 无线电
Python selenium绕过webdriver监测执行javascript
2022/04/12 Python
python数字图像处理之图像的批量处理
2022/06/28 Python