• 技术文章 >Python技术 >Python基础教程

    python中Task封装协程

    小妮浅浅小妮浅浅2021-07-20 16:45:19原创2482

    说明

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

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

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

    实例

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    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)

    print(done, pending)

      

      

    asyncio.run(main())

    以上就是python中Task封装协程的方法,希望对大家有所帮助。更多Python学习指路:python基础教程

    专题推荐:python task
    上一篇:python导入模块的过程 下一篇:python迭代器和生成器的总结

    相关文章推荐

    • 什么是网络协议• python中的去除重复项的操作• python中少见的函数map()和partial()• python的sort()排序方法• Python中的文件读写-理论知识

    全部评论我要评论

    © 2021 Python学习网 苏ICP备2021003149号-1

  • 取消发布评论
  • 

    Python学习网