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