async def process_chunk(chunk: str) -> str:

time.sleep блокирует event loop, поэтому 100 корутин фактически выполнят ожидания последовательно примерно за 10 секунд. gather не делает синхронное блокирующее действие неблокирующим.

Короткий ответ

Что ответить на собеседовании

time.sleep блокирует event loop, поэтому 100 корутин фактически выполнят ожидания последовательно примерно за 10 секунд. gather не делает синхронное блокирующее действие неблокирующим.

Подробный разбор

Ответ с пояснениями

Условие

async def process_chunk(chunk: str) -> str: time.sleep(0.1) return chunk.upper()

async def main(): chunks = ["text"] * 100 tasks = [process_chunk(c) for c in chunks]

results = await asyncio.gather(*tasks)
print(len(results))

Ответ

time.sleep блокирует event loop, поэтому 100 корутин фактически выполнят ожидания последовательно примерно за 10 секунд. gather не делает синхронное блокирующее действие неблокирующим.

Если здесь моделируется асинхронное ожидание, замените его:

async def process_chunk(chunk: str) -> str:
    await asyncio.sleep(0.1)
    return chunk.upper()

При свободном loop общее ожидание будет близко к 0,1 секунды плюс накладные расходы, а напечатается 100. Если вместо sleep реальное блокирующее I/O, нужен async-драйвер или ограниченный thread pool; для тяжёлого CPU-преобразования рассматривают другие исполнители. Сотни тысяч задач сразу тоже создавать не стоит.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее