Python并发concurrent.futures和asyncio的用法
发布时间:2020-07-29 09:26:00
来源:亿速云
阅读:104
作者:小猪
这篇文章主要讲解了Python并发concurrent.futures和asyncio的用法,内容清晰明了,对此有兴趣的小伙伴可以学习一下,相信大家阅读完之后会有帮助。
说明
Python标准库为我们提供了threading和multiprocessing模块编写相应的多线程/多进程代码。
从Python3.2开始,标准库为我们提供了concurrent.futures模块,concurrent.futures 模块的主要特色是 ThreadPoolExecutor 和
ProcessPoolExecutor 类,这两个类实现的接口能分别在不同的线程或进程中执行可调
用的对象。这两个类在内部维护着一个工作线程或进程池,以及要执行的任务队列。
Python 3.4 以后标准库中asyncio 包,这个包使用事件循环驱动的协程实现并发。这是 Python 中最大也
是最具雄心壮志的库之一。asyncio 大量使用 yield from 表达式,因此与
Python 旧版不兼容。
submit和map方法
submit方法作用是向线程池提交可回调的task,并返回一个回调实例。
example:
import time
from concurrent.futures import ThreadPoolExecutor
# 可回调的task
def pub_task(msg):
time.sleep(3)
return msg
# 创建一个线程池
pool = ThreadPoolExecutor(max_workers=3)
# 往线程池加入2个task
task1 = pool.submit(pub_task, 'a')
task2 = pool.submit(pub_task, 'b')
print(task1.done()) # False
time.sleep(4)
print(task2.don