asyncio协程
原地址:https://pythonav.com/wiki/detail/6/91/
视频:https://www.bilibili.com/video/BV1dD4y127bD?p=7
import asyncio
async def func():
print(1)
await asyncio.sleep(2)
print(2)
return "返回值"
async def main():
print("main开始")
# 创建协程,将协程封装到Task对象中并添加到事件循环的任务列表中,等待事件循环去执行(默认是就绪状态)。
# 在调用
task_list = [
asyncio.create_task(func(), name="n1"),
asyncio.create_task(func(), name="n2")
]
print("main结束")
# 当执行某协程遇到IO操作时,会自动化切换执行其他任务。
# 此处的await是等待所有协程执行完毕,并将所有协程的返回值保存到done
# 如果设置了timeout值,则意味着此处最多等待的秒,完成的协程返回值写入到done中,未完成则写到pending中。
done, pending = await asyncio.wait(task_list, timeout=None)#asyncio.wait()中可放列表,不然一个await后只能放一个任务
print(done, pending)#timeout等于几,超过几秒就不等了,done是完成了的结果,pending是未完成的结果
asyncio.run(main())
3.2.3的实例三已经不具备意义,现在需要创建一个task才可以

浙公网安备 33010602011771号