前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python简述

Python简述

作者头像
py3study
发布2020-01-06 15:00:21
5050
发布2020-01-06 15:00:21
举报
文章被收录于专栏:python3

小编给读者们分享一下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函数

代码语言:javascript
复制
itr_arg:一个可迭代的参数,可以是列表字典等可迭代的对象
基本上和python的map函数一样
注意result并不是你map_fun返回的结果,而是一个生成器,如果要从中去结果,你可以使用列表生成式或者其他你想使用的方法

''' for res in result:

代码语言:javascript
复制
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):

代码语言:javascript
复制
future= executor.submit(fun, args[i])
future_list.append(future)

''' for res in ac_completed(futrue_list): #这个futrure_list是你future对象的列表

代码语言:javascript
复制
print(res.result())        #循环遍历时用.result()来取返回值
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/10/09 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档