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Сообщить о неточности