Python Glossary English

Python 3.12+inspectфункция

inspect.getasyncgenstate()

корутины и генераторы

Состояние асинхронного генератора строкой: AGEN_CREATED, AGEN_RUNNING, AGEN_SUSPENDED или AGEN_CLOSED. Появилась в 3.12.

Синтаксис

inspect.getasyncgenstate(agen)

Асинхронный генератор — это async def с yield, и ни getgeneratorstate, ни getcoroutinestate к нему не подходят. Закрывают его await agen.aclose(), а не close(): у асинхронного генератора синхронного close() нет. До 3.12 состояние приходилось выводить из ag_running и ag_frame вручную.

Примеры

import asyncio, inspect
async def numbers():
    yield 1
    yield 2
async def main():
    agen = numbers()
    print(inspect.getasyncgenstate(agen))
    print(await anext(agen), inspect.getasyncgenstate(agen))
    await agen.aclose()
    print(inspect.getasyncgenstate(agen))
asyncio.run(main())  # → AGEN_CREATED / 1 AGEN_SUSPENDED / AGEN_CLOSED

См. также

Открыть в полном глоссарииdocs.python.orgСообщить о неточности