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开发windows GUI程序入门实例
Oct 23 Python
python导出chrome书签到markdown文件的实例代码
Dec 27 Python
Python日期时间模块datetime详解与Python 日期时间的比较,计算实例代码
Sep 14 Python
python全栈知识点总结
Jul 01 Python
python 实现在一张图中绘制一个小的子图方法
Jul 07 Python
Django REST Framework之频率限制的使用
Sep 29 Python
Python合并2个字典成1个新字典的方法(9种)
Dec 19 Python
django之导入并执行自定义的函数模块图解
Apr 01 Python
PyInstaller运行原理及常用操作详解
Jun 13 Python
高考考python编程是真的吗
Jul 20 Python
Python confluent kafka客户端配置kerberos认证流程详解
Oct 12 Python
PyCharm2020.3.2安装超详细教程
Feb 08 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 文本文章分页代码 按标记或长度(不涉及数据库)
2012/06/07 PHP
深入解析Session是否必须依赖Cookie
2013/08/02 PHP
PHP的一个完美GIF等比缩放类,附带去除缩放黑背景
2014/04/01 PHP
javascript中的循环语句for语句深入理解
2014/04/04 Javascript
jquery获得同源iframe内body下标签的值的方法
2014/09/25 Javascript
Javascript限制网页只能在微信内置浏览器中访问
2014/11/09 Javascript
浅谈JavaScript实现面向对象中的类
2014/12/09 Javascript
让javascript加载速度倍增的方法(解决JS加载速度慢的问题)
2014/12/12 Javascript
基于JavaScript实现根据手机定位获取当前具体位置(X省X市X县X街道X号)
2015/12/29 Javascript
使用jQuery的easydrag插件实现可拖动的DIV弹出框
2016/02/19 Javascript
jQuery弹出div层过2秒自动消失
2016/11/29 Javascript
微信小程序微信支付接入开发实例详解
2017/04/12 Javascript
老生常谈js-react组件生命周期
2017/05/02 Javascript
vue2.0结合Element实现select动态控制input禁用实例
2017/05/12 Javascript
EasyUI中的dataGrid的行内编辑
2017/06/22 Javascript
jquery 输入框查找关键字并提亮颜色的实例代码
2018/01/23 jQuery
基于 Immutable.js 实现撤销重做功能的实例代码
2018/03/01 Javascript
原生JS实现简单的无缝自动轮播效果
2018/09/26 Javascript
理解JavaScript中的对象
2020/08/25 Javascript
vue-router懒加载的3种方式汇总
2021/02/28 Vue.js
[01:30]2016国际邀请赛中国区预选赛神秘商店火爆开启
2016/06/26 DOTA
pycharm 主题theme设置调整仿sublime的方法
2018/05/23 Python
用python3读取python2的pickle数据方式
2019/12/25 Python
Django之form组件自动校验数据实现
2020/01/14 Python
Python如何在DataFrame增加数值
2020/02/14 Python
Django admin组件的使用
2020/10/24 Python
详解background属性的8个属性值(面试题)
2020/11/02 HTML / CSS
有机童装:Toby Tiger
2018/05/23 全球购物
英国户外服装、鞋类和设备的领先零售商:Millets
2020/10/12 全球购物
班组长竞聘书
2014/03/31 职场文书
春节联欢会策划方案
2014/05/16 职场文书
小学生放飞梦想演讲稿
2014/08/26 职场文书
商铺门面租房协议书
2014/10/21 职场文书
幼儿园教师节活动总结
2015/03/23 职场文书
《家》读后感:万惜拯救,冷暖自知
2019/09/25 职场文书
Spring Cloud Gateway去掉url前缀
2021/07/15 Java/Android