Прескочи на главни садржај
🔒 Режим прегледа. Првих петнаест Foundations лекција је бесплатно; ова је Pro. Покрените 7-дневни trial да откључате едитор, AI савете и остатак курса. Картица је обавезна, можете отказати у било ком тренутку у Dashboard.Покрени 7-дневни trial →
← KurseviSenior Deep-DivesModule 1 · Concurrency internals · Recapасинцио.Семафор за противпритисакpredict26 / 161
+100 XP
Zadatak
📝 **Питање:** Предвидите тачан резултат. Пет задатака (А-Е) сви покушавају да уђу у \`асинц са сем\` где је \`сем = Семапхоре(2)\`. Они су заказани од стране \`окупљања\` по реду. Колики је вршни број у лету? Којим редоследом набављају и пуштају? 📋 Изаберите тачан одговор. 💡 **Савет:** Поново прочитајте горњу теорију ако нисте сигурни.
Predvidi izlaz

Pažljivo pročitaj kod

import asyncio

state = {"in_flight": 0, "peak": 0}


async def task(name, sem):
    async with sem:
        state["in_flight"] += 1
        state["peak"] = max(state["peak"], state["in_flight"])
        print(f"acquire:{name}:inflight={state['in_flight']}")
        await asyncio.sleep(0)
        await asyncio.sleep(0)
        state["in_flight"] -= 1
        print(f"release:{name}")


async def main():
    sem = asyncio.Semaphore(2)
    await asyncio.gather(*[task(c, sem) for c in "ABCDE"])
    print(f"peak:{state['peak']}")


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…