Python Glossary English

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

asyncio.eager_task_factory()

задачи

Готовая фабрика «жадных» задач: корутина начинает выполняться сразу в create_task, до первого await, а не на следующей итерации цикла.

Синтаксис

loop.set_task_factory(asyncio.eager_task_factory)

Включается loop.set_task_factory(asyncio.eager_task_factory). Если корутина завершилась без единой приостановки, задача сразу done и вовсе не попадает в планировщик — это заметно ускоряет код с кэшами. Но меняется порядок: код до первого await выполняется раньше строки, следующей за create_task, и программы, которые на старый порядок полагались, ломаются. Появилась в 3.12.

Примеры

import asyncio
async def cached():
    print('выполняется')
    return 42
async def main():
    asyncio.get_running_loop().set_task_factory(asyncio.eager_task_factory)
    task = asyncio.create_task(cached())  # → выполняется — ещё внутри create_task
    print(task.done(), task.result())  # → True 42
asyncio.run(main())

См. также

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