说明
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())
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
评论(0)