当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python typing.AsyncGenerator用法及代码示例


用法:

class typing.AsyncGenerator(AsyncIterator[T_co], Generic[T_co, T_contra])

异步生成器可以由泛型类型 AsyncGenerator[YieldType, SendType] 注释。例如:

async def echo_round() -> AsyncGenerator[int, float]:
    sent = yield 0
    while sent >= 0.0:
        rounded = await round(sent)
        sent = yield rounded

与普通生成器不同,异步生成器不能返回值,因此没有ReturnType 类型参数。与 Generator 一样,SendType 的行为是逆变的。

如果您的生成器只会产生值,请将 SendType 设置为 None

async def infinite_stream(start: int) -> AsyncGenerator[int, None]:
    while True:
        yield start
        start = await increment(start)

或者,将您的生成器注释为返回类型为 AsyncIterable[YieldType]AsyncIterator[YieldType]

async def infinite_stream(start: int) -> AsyncIterator[int]:
    while True:
        yield start
        start = await increment(start)

版本 3.6.1 中的新函数。

自 3.9 版后已弃用:collections.abc.AsyncGenerator现在支持[].看PEP 585通用别名类型.

相关用法


注:本文由纯净天空筛选整理自python.org大神的英文原创作品 typing.AsyncGenerator。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。