python中Task封装协程
发布时间:2024-07-04 14:44:14

说明
1、Task是Future的子类,Task是对协程的包装,我们在循环调度列表中放置多个Task,等待调度执行。
2、Task对象可以跟踪任务和状态。Future(Task是Futrue的子类)为我们提供异步编程中最终结果的处理(Task类也具有状态处理功能)。
3、将协程包装成Task,加入队列等待调用。刚创建Task时不执行,遇到await时执行。
实例
importasyncio
asyncdeffunc():
print(1)
awaitasyncio.sleep(2)
print(2)
return"返回值"
asyncdefmain():
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=awaitasyncio.wait(task_list,timeout=None)
print(done,pending)
asyncio.run(main())以上就是python中Task封装协程的方法,希望对大家有所帮助。更多Python学习指导:python基础教程
下一篇 python导入模块的过程
