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中title()方法的使用简介
May 20 Python
Python实现压缩与解压gzip大文件的方法
Sep 18 Python
python实现解数独程序代码
Apr 12 Python
Python虚拟环境项目实例
Nov 20 Python
Python logging管理不同级别log打印和存储实例
Jan 19 Python
python解析html提取数据,并生成word文档实例解析
Jan 22 Python
Centos下实现安装Python3.6和Python2共存
Aug 15 Python
Django admin禁用编辑链接和添加删除操作详解
Nov 15 Python
python如何查看网页代码
Jun 07 Python
Python定义一个Actor任务
Jul 29 Python
安装pytorch时报sslerror错误的解决方案
May 17 Python
PyQt5实现多张图片显示并滚动
Jun 11 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实现无限极分类的两种方式示例【递归和引用方式】
2019/03/25 PHP
PHP使用gearman进行异步的邮件或短信发送操作详解
2020/02/27 PHP
使用Apache的rewrite
2021/03/09 Servers
jQuery UI Dialog 创建友好的弹出对话框实现代码
2012/04/12 Javascript
js实现省市联动效果的简单实例
2014/02/10 Javascript
JavaScript数组Array对象增加和删除元素方法总结
2015/01/20 Javascript
原生js实现移动开发轮播图、相册滑动特效
2015/04/17 Javascript
JS实现仿QQ聊天窗口抖动特效
2015/05/10 Javascript
原生和jQuery的ajax用法详解
2017/01/23 Javascript
微信小程序自定义弹窗wcPop插件
2018/11/19 Javascript
Three.JS实现三维场景
2018/12/30 Javascript
基于Vue sessionStorage实现保留搜索框搜索内容
2020/06/01 Javascript
[04:48]DOTA2上海特锦赛小组赛第三日 TOP10精彩集锦
2016/02/28 DOTA
[02:38]2018DOTA2亚洲邀请赛赛前采访-VGJ.T
2018/04/03 DOTA
python使用自定义user-agent抓取网页的方法
2015/04/15 Python
浅析Python多线程下的变量问题
2015/04/28 Python
Python实例一个类背后发生了什么
2016/02/09 Python
浅谈python中的正则表达式(re模块)
2017/10/17 Python
python2.7实现FTP文件下载功能
2018/04/15 Python
Python使用python-docx读写word文档
2019/08/26 Python
什么是Python中的顺序表
2020/06/02 Python
Pycharm连接gitlab实现过程图解
2020/09/01 Python
python 统计list中各个元素出现的次数的几种方法
2021/02/20 Python
HTML5中的Web Notification桌面右下角通知功能的实现
2018/04/19 HTML / CSS
HTML5的postMessage的使用手册
2018/12/19 HTML / CSS
eDreams葡萄牙:全球最大的在线旅行社之一
2019/04/15 全球购物
信息部岗位职责
2013/11/12 职场文书
银行学习十八大感想
2014/01/11 职场文书
偷看我的初中毕业鉴定
2014/01/29 职场文书
2014年高考决心书
2014/03/11 职场文书
行政前台岗位职责
2015/04/16 职场文书
交通肇事罪辩护词
2015/05/21 职场文书
创业项目(超低成本创业项目)
2019/08/16 职场文书
利用Python实现Picgo图床工具
2021/11/23 Python
斗罗大陆八大特殊魂兽,龙族始祖排榜首,第五最残忍(翠魔鸟)
2022/03/18 国漫
详解Redis的三种常用的缓存读写策略步骤
2022/05/06 Redis