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 相关文章推荐
详谈pandas中agg函数和apply函数的区别
Apr 20 Python
Python 处理图片像素点的实例
Jan 08 Python
PyQt5的PyQtGraph实践系列3之实时数据更新绘制图形
May 13 Python
基于python实现的百度新歌榜、热歌榜下载器(附代码)
Aug 05 Python
python logging日志模块原理及操作解析
Oct 12 Python
tensorflow tf.train.batch之数据批量读取方式
Jan 20 Python
python列表返回重复数据的下标
Feb 10 Python
安装多个版本的TensorFlow的方法步骤
Apr 21 Python
python selenium xpath定位操作
Sep 01 Python
10个python爬虫入门实例(小结)
Nov 01 Python
Python爬虫逆向分析某云音乐加密参数的实例分析
Dec 04 Python
Python Process创建进程的2种方法详解
Jan 25 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面向对象全攻略 (七) 继承性
2009/09/30 PHP
PHP中CURL的CURLOPT_POSTFIELDS参数使用细节
2014/03/17 PHP
PHP 如何获取二维数组中某个key的集合
2014/06/03 PHP
PHP的serialize序列化数据以及JSON格式化数据分析
2015/10/10 PHP
php HTML无刷新提交表单
2016/04/05 PHP
laravel-admin 中列表筛选方法
2019/10/03 PHP
CSS中一些@规则的用法小结
2021/03/09 HTML / CSS
JavaScript中的几个关键概念的理解-原型链的构建
2011/05/12 Javascript
优化innerHTML操作(提高代码执行效率)
2011/08/20 Javascript
jQuery图片滚动图片的效果(另类实现)
2013/06/02 Javascript
用Javascript来生成ftp脚本的小例子
2013/07/03 Javascript
Js(JavaScript)中,弹出是或否的选择框示例(confirm用法的实例分析)
2013/07/09 Javascript
javascript setinterval 的正确语法如何书写
2014/06/17 Javascript
Javascript正则控制文本框只能输入整数或浮点数
2014/09/02 Javascript
node.js中的path.resolve方法使用说明
2014/12/08 Javascript
JavaScript调试工具汇总
2014/12/23 Javascript
Vuejs第一篇之入门教程详解(单向绑定、双向绑定、列表渲染、响应函数)
2016/09/09 Javascript
详解Webstorm 新建.vue文件支持高亮vue语法和es6语法
2017/10/26 Javascript
vue路由组件按需加载的几种方法小结
2018/07/12 Javascript
vant 中van-list的用法说明
2020/11/11 Javascript
element-ui封装一个Table模板组件的示例
2021/01/04 Javascript
[02:46]解说DC:感谢430陪伴我们的DOTA2国际邀请赛岁月
2016/06/29 DOTA
Python算法之栈(stack)的实现
2014/08/18 Python
python自动zip压缩目录的方法
2015/06/28 Python
Python获取某一天是星期几的方法示例
2017/01/17 Python
解决Pycharm出现的部分快捷键无效问题
2018/10/22 Python
Python中实现单例模式的n种方式和原理
2018/11/14 Python
python代码如何实现余弦相似性计算
2020/02/09 Python
阿根廷旅游网站:almundo阿根廷
2018/02/12 全球购物
GE设备配件:GE Appliance Parts(家电零件、配件和滤水器)
2018/11/28 全球购物
英国Office鞋店德国网站:在线购买鞋子、靴子和运动鞋
2018/12/19 全球购物
为什么会有内存对齐
2016/10/10 面试题
竞聘医务工作人员的自我评价分享
2013/11/04 职场文书
产品陈列协议书(标准版)
2014/09/17 职场文书
教师党员个人自我剖析材料
2014/09/29 职场文书
2014年保卫工作总结
2014/12/05 职场文书