Sobes.tech
Back to questions
Junior — Middle
97

Что случится, если в асинхронной функции применить блокирующую задержку time.sleep()?

Companies where asked
СБЕР Центр ИИСБЕР Центр ИИ

Answer from AI

sobes.tech AI

Если в асинхронной функции Python использовать блокирующую задержку time.sleep(), то выполнение всей программы будет приостановлено на время сна, блокируя текущий поток. Это нарушает преимущества асинхронности, так как другие задачи в event loop не смогут выполняться параллельно.

Вместо time.sleep() в асинхронном коде следует использовать await asyncio.sleep(), который не блокирует event loop и позволяет другим корутинам выполняться во время ожидания.

Пример:

import asyncio
import time

async def wrong_sleep():
    print('Start')
    time.sleep(2)  # блокирует весь event loop
    print('End')

async def correct_sleep():
    print('Start')
    await asyncio.sleep(2)  # не блокирует event loop
    print('End')

asyncio.run(correct_sleep())