當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。