python培训之Task封装协程

发布时间:2023-02-02 09:40:23 人气:63 作者:多测师

  python中Task封装协程

  说明

  1、Task是Future的子类,Task是对协程的封装,我们把多个Task放在循环调度列表中,等待调度执行。

  2、Task对象可以跟踪任务和状态。Future(Task是Futrue的子类)为我们提供了异步编程中最终结果的处理(Task类还具有状态处理功能)。

  3、把协程封装成Task,加入一个队列等待调用。刚创建Task的时候不执行,遇到await就执行。

  实例

  import asyncio

  async def func():

  print(1)

  await asyncio.sleep(2)

  print(2)

python培训之Task封装协程

  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)

  print(done, pending)

  asyncio.run(main())

  以上就是python中Task封装协程的方法,希望对大家有所帮助。更多Python学习指路:请关注多测师。https://www.e70w.com/xwzx/




返回列表
在线客服
联系方式

热线电话

17727591462

上班时间

周一到周五

二维码
线