Preskoči na glavni sadržaj
🔒 Način pregleda. Prvih petnaest Foundations lekcija je besplatno; ova je Pro. Pokrenite 7-dnevni trial da otključate editor, AI savjete i ostatak programa. Kartica obavezna, otkažite bilo kada u Dashboard.Pokreni 7-dnevni trial →
← KolegijiSenior Deep-DivesModule 1 · Concurrency internals · Recapasyncio.Semafor za povratni pritisakpredict26 / 161
+100 XP
Zadatak
📝 **Pitanje:** Predvidite točan rezultat. Pet zadataka (A-E) svi pokušavaju unijeti \`async sa sem\` gdje \`sem = Semaphore(2)\`. Raspoređeni su po \`okupljanju\` redom. Koliki je najveći broj u letu? Kojim redoslijedom stječu i otpuštaju? 📋 Odaberite pravi odgovor. 💡 **Savjet:** Ponovno pročitajte gornju teoriju ako niste sigurni.
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())

Što će program ispisati? Napiši ovdje:

💬 Rasprava

Budi prvi — postavi pitanje ili podijeli savjet.
Prijavi se kako bi se pridružio raspravi. Čitanje je besplatno.
Učitavanje rasprave…