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 8 · Async correctness patternsasyncio.Queue — bounded backpressure between producer and consumerpredict129 / 161
+150 XP
Aufgabe
📝 **Aufgabe:** Sagen Sie die genaue 10-Zeilen-Ausgabe voraus. Die Warteschlange beginnt mit maxsize=3, füllt sich, lässt ein Element leeren, akzeptiert ein weiteres und wird dann vollständig geleert. Die FIFO-Reihenfolge ist die zentrale Invariante – First In, First Out. 📋 Implementieren Sie die obige Funktion. Tests laufen automatisch ab. 💡 **Hinweis:** Lesen Sie die Theorie noch einmal, wenn Sie nicht weiterkommen.
Sage die Ausgabe vorher

Lies den Code sorgfältig

import asyncio


async def main() -> None:
    q: asyncio.Queue = asyncio.Queue(maxsize=3)

    await q.put("a")
    await q.put("b")
    await q.put("c")

    print(f"size after 3 puts: {q.qsize()}")
    print(f"full: {q.full()}")

    item = await q.get()
    q.task_done()
    print(f"got: {item}")
    print(f"size after 1 get: {q.qsize()}")

    await q.put("d")
    print(f"size after put d: {q.qsize()}")

    while not q.empty():
        item = await q.get()
        print(f"drained: {item}")
        q.task_done()

    print(f"final size: {q.qsize()}")
    print(f"empty: {q.empty()}")


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…