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实现将n个点均匀地分布在球面上的方法
Mar 12 Python
Python实现一个Git日志统计分析的小工具
Dec 14 Python
windows下安装python的C扩展编译环境(解决Unable to find vcvarsall.bat)
Feb 21 Python
Django学习笔记之ORM基础教程
Mar 27 Python
对Python 3.5拼接列表的新语法详解
Nov 08 Python
朴素贝叶斯Python实例及解析
Nov 19 Python
python openpyxl使用方法详解
Jul 18 Python
对python while循环和双重循环的实例详解
Aug 23 Python
Pytorch 神经网络—自定义数据集上实现教程
Jan 07 Python
django模型动态修改参数,增加 filter 字段的方式
Mar 16 Python
tensorflow中tf.reduce_mean函数的使用
Apr 19 Python
pytorch中的 .view()函数的用法介绍
Mar 17 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
基于mysql的bbs设计(五)
2006/10/09 PHP
Laravel Intervention/image图片处理扩展包的安装、使用与可能遇到的坑详解
2017/11/14 PHP
使用Javascript和DOM Interfaces来处理HTML
2006/10/09 Javascript
javascript 处理事件绑定的一些兼容写法
2009/12/24 Javascript
jquery插件制作 图片走廊 gallery
2012/08/17 Javascript
document.getElementBy("id")与$("#id")有什么区别
2013/09/22 Javascript
jQuery读取XML文件内容的方法
2015/03/09 Javascript
javascript insertAfter()定义与用法示例
2016/07/25 Javascript
JS简单实现浮动窗口效果示例
2016/09/07 Javascript
switch语句的妙用(必看篇)
2016/10/03 Javascript
vuejs事件中心管理组件间的通信详解
2017/08/09 Javascript
深入浅析Node.js 事件循环、定时器和process.nextTick()
2018/10/22 Javascript
发布一款npm包帮助理解npm的使用
2019/01/03 Javascript
vue中使用element组件时事件想要传递其他参数的问题
2019/09/18 Javascript
vue中axios的二次封装实例讲解
2019/10/14 Javascript
微信小程序实现Swiper轮播图效果
2019/11/22 Javascript
从零开始在vue-cli4配置自适应vw布局的实现
2020/06/08 Javascript
JavaScript手写数组的常用函数总结
2020/11/22 Javascript
python基于mysql实现的简单队列以及跨进程锁实例详解
2014/07/07 Python
python 判断txt每行内容中是否包含子串并重新写入保存的实例
2020/03/12 Python
Django Xadmin多对多字段过滤实例
2020/04/07 Python
解决TensorFlow调用Keras库函数存在的问题
2020/07/06 Python
AmazeUi Tree(树形结构) 应用小结
2020/08/17 HTML / CSS
北美三大旅游网站之一:Travelocity
2017/08/12 全球购物
学生喝酒检讨书
2014/02/06 职场文书
个人欠款担保书
2014/05/20 职场文书
个人总结与自我评价
2014/09/18 职场文书
乡镇务虚会发言材料
2014/10/20 职场文书
个人工作总结范文2014
2014/11/07 职场文书
蓬莱阁导游词
2015/02/04 职场文书
2016清明节森林防火广播稿
2015/12/17 职场文书
2016年幼儿园庆六一开幕词
2016/03/04 职场文书
2019年大学毕业生个人自我鉴定范文大全
2019/03/21 职场文书
承诺书怎么写 ?
2019/04/16 职场文书
mysql如何能有效防止删库跑路
2021/10/05 MySQL
动态规划之使用备忘录来改进Javascript函数
2022/04/07 Javascript