Sobes.tech
Junior — Middle
115

Was passiert, wenn in einer asynchronen Funktion eine blockierende Verzögerung mit time.sleep() angewendet wird?

Unternehmen wurden gefragt
СБЕР Центр ИИСБЕР Центр ИИ

Antwort von AI

sobes.tech KI

Если в асинхронной функции 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())