栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

生成器功能和异步生成器功能的用途有什么区别

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

生成器功能和异步生成器功能的用途有什么区别

PEP 525-异步发电机的用途与PEP
255-

引入发电机的简单发电机非常相似。它的主要目的是使事情仅在不同的域(异步域)中
更易于 实现。从PEP 525:

从本质上讲,适用于异步执行情况的PEP 255的目标和基本原理也适用于此建议。

简而言之,它使编写支持异步迭代协议的对象变得容易。正如 生成器迭代器协议 所做的那样。

而不必定义执行对象

__aiter__
,并
__anext__
创建一个异步发电机,通过魔法看似做到这一点。这反映了生成器为迭代器协议所做的工作;而不是实施
__iter__
__next__
一个对象,你可以创建一个发电机。

PEP 525的原理很好地说明了这一点,其中还包括一个不错的示例,该示例显示了使用异步生成器时在编写代码中节省的成本。

除了节省代码长度之外,异步生成器的性能也更好:

性能是此建议的另一个要点:在我们对参考实现的测试中,异步生成器比等效实现为异步迭代器快2倍。


只是在此处添加一些术语,因为有时很难跟踪术语:

  • 生成器:
    def
    包含一个或多个
    yield
    表达式的函数。
  • 基于生成器的协程:由包裹的生成器(
    def
    +
    yield
    types.coroutine
    。如果需要将其
    types.coroutine
    视为协程对象,则需要将其包装。
  • 异步生成器:
    async def
    包含一个或多个
    yield
    表达式的函数。这些还可以包含
    await
    表达式。
  • 协程:
    async def
    不带零个或多个
    await
    且不带
    yield
    s。


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/441218.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号