Перейти к основному содержимому
🔒 Режим превью. Первые 15 уроков Foundations — бесплатные; этот — Pro. Запусти 7-дневный trial чтобы открыть редактор, AI-подсказки и остальной курс. Нужна карта, отмена в Dashboard в любой момент.Начать 7-дневный trial →
← КурсыSenior Deep-DivesModule 8 · Async correctness patternsasyncio.TaskGroup — structured concurrency (3.11+) replaces gatherpredict132 / 161
+150 XP
Задание
📝 **Задание:** Предскажите точный результат из 6 строк. Внутри TaskGroup создаются три задачи: ок-быстро (10 мс, без сбоев), бум (20 мс, возникает ошибка ValueError), ок-медленно (50 мс, без сбоев). TaskGroup перехватывает исключение бума и печатает сводку. Отследите, какие строки задач действительно активируются, а какие отменяются во время сна. 📋 Реализуйте функцию выше. Тесты запускаются автоматически. 💡 **Подсказка:** Если вы застряли, перечитайте теорию.
Предскажи вывод

Прочти код внимательно

import asyncio


events: list[str] = []


async def task(name: str, work: float, fail: bool = False) -> None:
    events.append(f"{name} start")
    await asyncio.sleep(work)
    if fail:
        events.append(f"{name} raising")
        raise ValueError(f"{name} failed")
    events.append(f"{name} done")


async def main() -> None:
    try:
        async with asyncio.TaskGroup() as tg:
            tg.create_task(task("ok-fast", 0.01))
            tg.create_task(task("boom", 0.02, fail=True))
            tg.create_task(task("ok-slow", 0.05))
    except* ValueError as eg:
        events.append(f"caught {len(eg.exceptions)} exception(s)")

    for e in events:
        print(e)


asyncio.run(main())

Что выведет программа? Напиши здесь:

💬 Обсуждение

Будьте первым — задайте вопрос или поделитесь подсказкой.
Войдите чтобы участвовать в обсуждении. Чтение бесплатно.
Загрузка обсуждения…