Zum Hauptinhalt springen
🔒 Vorschaumodus. Die ersten fünfzehn Foundations-Lektionen sind kostenlos; diese hier ist Pro. Starte einen 7-Tage-Trial, um den Editor, AI-Hinweise und den Rest des Lehrplans freizuschalten. Karte erforderlich, jederzeit im Dashboard kündbar.7-Tage-Trial starten →
← KurseSenior Deep-DivesModule 1 · Concurrency internals · Recapasyncio.Semaphore für Gegendruckpredict26 / 161
+100 XP
Aufgabe
📝 **Frage:** Sagen Sie die genaue Ausgabe voraus. Fünf Aufgaben (A-E) versuchen alle, „async with sem“ einzugeben, wobei „sem = Semaphore(2)“ ist. Sie werden von „gather“ der Reihe nach geplant. Wie hoch ist die Spitzenzahl während des Fluges? In welcher Reihenfolge werden sie erworben und freigegeben? 📋 Wählen Sie die richtige Antwort. 💡 **Hinweis:** Lesen Sie die obige Theorie noch einmal, wenn Sie sich nicht sicher sind.
Sage die Ausgabe vorher

Lies den Code sorgfältig

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

Was wird das Programm ausgeben? Schreib hier:

💬 Diskussion

Sei der erste — stelle eine Frage oder teile einen Tipp.
Anmelden um an der Diskussion teilzunehmen. Lesen ist kostenlos.
Diskussion wird geladen…