Python线程池模块ThreadPoolExecutor用法分析
2020-02-17 05:26
525 查看
这篇文章主要介绍了Python线程池模块ThreadPoolExecutor用法,结合实例形式分析了Python线程池模块ThreadPoolExecutor的导入与基本使用方法,需要的朋友可以参考下
文实例讲述了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学习扣qun:774711191 ,看看前辈们是如何学习的!从基础的python脚本到web开发、爬虫、django、数据挖掘等【PDF,实战源码】,零基础到项目实战的资料都有整理。送给每一位python的小伙伴!每天都有大牛定时讲解Python技术,分享一些学习的方法和需要注意的小细节,点击加入我们的 python学习者聚集地
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- python程序中的线程操作 concurrent模块使用详解
- Python 多线程,threading模块,创建子线程的两种方式示例
- Python2.7自学笔记 Day1
- Python2.7学习笔记-Day3
- Python2.7学习笔记-Day4
- 基于Python的人脸自动戴口罩系统
- 【华为云技术分享】Python 中的异常和错误
- Python+OpenCV实现实时眼动追踪
- Win10+vs2015+python3.5+CUDA9.0的caffe库编译(一)
- Python中return、break、continue三者的区别
- Python之----装饰器
- Python之----日志模块
- python3.7安装pytorch
- 用powershell实现Python
- Python基础-生成器
- Python查看微信好友男女比例及地域为位置和图灵机器人自动聊天
- python学习笔记(一)
- Python爬虫 获取免费的代理Ip
- numpy基本操作
- python标准库 os