Python Glossary English

Python 3.5+Асинхронное программированиефункция

asyncio.isfuture()

интроспекция

Проверяет, что объект похож на asyncio.Future: это сам Future, Task или объект с совместимым интерфейсом.

Синтаксис

asyncio.isfuture(obj)

Ловушка: concurrent.futures.Future из пула потоков — не asyncio-Future, и isfuture() даёт для него False; await на нём не работает, пока его не обернуть в wrap_future(). Корутина тоже не Future. Проверка утиная: смотрит на атрибут _asyncio_future_blocking, а не на isinstance, поэтому подходит и сторонним циклам вроде uvloop.

Примеры

import asyncio
import concurrent.futures
async def main():
    loop = asyncio.get_running_loop()
    task = asyncio.create_task(asyncio.sleep(0.01))
    print(asyncio.isfuture(loop.create_future()), asyncio.isfuture(task))  # → True True
    print(asyncio.isfuture(concurrent.futures.Future()))  # → False — другой Future
    await task
asyncio.run(main())

См. также

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