Прескочи на главни садржај
🔒 Режим прегледа. Првих петнаест Foundations лекција је бесплатно; ова је Pro. Покрените 7-дневни trial да откључате едитор, AI савете и остатак курса. Картица је обавезна, можете отказати у било ком тренутку у Dashboard.Покрени 7-дневни trial →
← KurseviSenior Deep-DivesModule 8 · Async correctness patternsasyncio.TaskGroup — structured concurrency (3.11+) replaces gatherpredict132 / 161
+150 XP
Zadatak
📝 **Задатак:** Предвидите тачан излаз од 6 редова. У оквиру ТаскГроуп-а се појављују три задатка: ок-брзо (10мс, без грешке), бум (20мс, повећава вредност грешке), ок-споро (50мс, без грешке). ТаскГроуп хвата изузетак грана и штампа резиме. Пратите које се линије задатака заправо активирају, а које се отказују усред спавања. 📋 Имплементирајте горњу функцију. Тестови се покрећу аутоматски. 💡 **Савет:** Поново прочитајте теорију ако запнете.
Predvidi izlaz

Pažljivo pročitaj kod

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

Šta će program ispisati? Napiši ovde:

💬 Diskusija

Budi prvi — postavi pitanje ili podeli savet.
Prijavi se da bi se pridružio diskusiji. Čitanje je besplatno.
Učitavanje diskusije…