什么是协程
简单来说,协程就是同时开启多个任务,但一次只顺序执行一个。等到所执行的任务遭遇阻塞,就切换到下一个任务继续执行,以期节省下阻塞所占用的时间。
简单说明
简单的代码示例
import asyncio
import time
async def func(url): # 定义一个协程函数
print("正在下载 url", url)
await asyncio.sleep(2) # 等待。等待的是一个协程函数
print("下载完成,", url)
if __name__ == '__main__':
start = time.time()
urls = ["a", "b", "c"]
tasks = []
for url in urls:
task = asyncio.ensure_future( func(url) ) # 创建协程任务
tasks.append(task)
loop = asyncio.get_event_loop() # 创建一个事件循环
# 两种实现方式
# 方式一
# loop.run_until_complete( asyncio.wait(tasks) ) # 将任务注册到事件循环中
# 方式二
for task in tasks:
loop.run_until_complete(task)
print(time.time() - start)
我们可以看看运行的结果