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抓取网页正文的源码
Jun 11 Python
Python实现115网盘自动下载的方法
Sep 30 Python
Python正规则表达式学习指南
Aug 02 Python
Python使用win32com实现的模拟浏览器功能示例
Jul 13 Python
基于Django用户认证系统详解
Feb 21 Python
Linux(Redhat)安装python3.6虚拟环境(推荐)
May 05 Python
python实现图书借阅系统
Feb 20 Python
win10系统Anaconda和Pycharm的Tensorflow2.0之CPU和GPU版本安装教程
Dec 03 Python
pycharm实现在子类中添加一个父类没有的属性
Mar 12 Python
Python使用Excel将数据写入多个sheet
May 16 Python
keras 如何保存最佳的训练模型
May 25 Python
使用tensorflow根据输入更改tensor shape
Jun 23 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批量缩放图片的代码[ini参数控制]
2011/02/11 PHP
phpexcel导出excel的颜色和网页中的颜色显示不一致
2012/12/11 PHP
php导出csv数据在浏览器中输出提供下载或保存到文件的示例
2014/04/24 PHP
Laravel5.1自定义500错误页面示例
2016/10/09 PHP
简单实现PHP留言板功能
2016/12/21 PHP
getElementByIdx_x js自定义getElementById函数
2012/01/24 Javascript
解决IE6的PNG透明JS插件使用介绍
2013/04/17 Javascript
jquery实现简单的拖拽效果实例兼容所有主流浏览器(优化篇)
2013/06/28 Javascript
如何实现chrome浏览器关闭页面时弹出“确定要离开此面吗?”
2015/03/05 Javascript
深入解析JavaScript框架Backbone.js中的事件机制
2016/02/14 Javascript
微信小程序 自己制作小组件实例详解
2016/12/22 Javascript
详解js的六大数据类型
2016/12/27 Javascript
使用Require.js封装原生js轮播图的实现代码
2017/06/15 Javascript
jQuery动态添加li标签并添加属性和绑定事件方法
2018/02/24 jQuery
nodejs实现一个word文档解析器思路详解
2018/08/14 NodeJs
[52:05]EG vs OG 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/18 DOTA
python使用PyV8执行javascript代码示例分享
2013/12/04 Python
Python Web开发模板引擎优缺点总结
2014/05/06 Python
解决Python中由于logging模块误用导致的内存泄露
2015/04/23 Python
编写Python脚本来获取mp3文件tag信息的教程
2015/05/04 Python
深入讲解Java编程中类的生命周期
2016/02/05 Python
Python3实现带附件的定时发送邮件功能
2020/12/22 Python
numpy中的delete删除数组整行和整列的实例
2018/05/09 Python
Python用61行代码实现图片像素化的示例代码
2018/12/10 Python
Python面向对象程序设计OOP深入分析【构造函数,组合类,工具类等】
2019/01/05 Python
python单向链表的基本实现与使用方法【定义、遍历、添加、删除、查找等】
2019/10/24 Python
电视购物广告词
2014/03/19 职场文书
2014年五四青年节演讲比赛方案
2014/04/22 职场文书
2014年双拥工作总结
2014/11/21 职场文书
小学庆六一主持词
2015/06/30 职场文书
62句有关感恩节文案(推荐收藏)
2019/11/28 职场文书
导游词之云南省玉龙雪山
2019/12/19 职场文书
Python绘制分类图的方法
2021/04/20 Python
详解Apache SkyWalking 告警配置指南
2021/04/22 Servers
MySQL 重写查询语句的三种策略
2021/05/10 MySQL
MySQL空间数据存储及函数
2021/09/25 MySQL