Sobes.tech
Junior — Middle
121

Wat gebeurt er als je in een asynchrone functie een blokkerende vertraging toepast met time.sleep()?

Bedrijven waar gevraagd werd
СБЕР Центр ИИСБЕР Центр ИИ

Antwoord van 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())