Python Glossary English

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

asyncio.sleep()

event loop

Приостанавливает корутину на указанное время, не блокируя event loop. Аналог time.sleep() для async.

Синтаксис

await asyncio.sleep(delay, result=None)

Главная ошибка — оставить в корутине time.sleep(): он замораживает весь поток вместе с event loop, и параллельные задачи встают, хотя код внешне выглядит асинхронным. Указанное время — минимум, а не точность: возврат произойдёт не раньше него, но насколько позже — зависит от загруженности цикла. Вызов asyncio.sleep(0) — идиома «уступить управление»: спать не нужно, но другим готовым задачам дают шанс поработать.

Примеры

import asyncio
async def task(n):
    await asyncio.sleep(0.1)
    return n * 2
async def main():
    r = await task(5)
    print(r)  # → 10
asyncio.run(main())
# asyncio.sleep(0) — уступить управление без паузы

См. также

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