Sobes.tech
Junior — Middle
119

Τι συμβαίνει αν σε μια ασύγχρονη λειτουργία εφαρμόσουμε μια μπλοκαριστική καθυστέρηση με το time.sleep();

Εταιρείες όπου ρωτήθηκαν
СБЕР Центр ИИСБЕР Центр ИИ

Απάντηση από 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())