Python协程


参考

笔记

  • Python的协程是通过Generator实现的,协程是遵循某些规则的生成器;
  • 运行一个协程,asyncio 提供三种机制:
    • asyncio.run()
    • await 等待一个协程
    • asyncio.create_task() 函数用来并发运行作为 asyncio任务的多个协程
  • 一个对象如果可以使用await语句,它就是一个可等待对象
  • 可等待对象有三种类型
    • 协程
    • 任务
      • 任务被用来并行的调度协程
      • 当一个协程通过 asyncio.create_task() 等函数被封装为一个任务,该协程会被自动调度执行
    • Future
      • Future是一种特殊的低层级可等待对象,表示一个异步操作的最终结果。
  • 休眠 coroutine asyncio.sleep(delay, result=None)
    • 如果指定了result,则当协程完成时将其返回给调用者
  • 并发运行任务 awaitable asyncio.gather(*aws, return_exceptions=False)
    • 并发 运行aws序列中的可等待对象。
    • 如果aws中某个可等待对象是协程,会自动作为一个任务调度
  • asyncio.gatherasyncio.wait 区别
    • asyncio.gather 返回一个list, 结果和输入协程的顺序一致
    • asyncio.wait 返回两个值,第一项表示完成的任务列表 (done),第二项表示等待 (Future) 完成的任务列表 (pending)
    • asyncio.wait 支持一个接收参数return_when,在默认情况下,asyncio.wait会等待全部任务完成 (return_when=’ALL_COMPLETED’),它还支持 FIRST_COMPLETED(第一个协程完成就返回)和 FIRST_EXCEPTION(出现第一个异常就返回)
  • asyncio.create_task 就是用的 loop.create_task
,

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注