Saltar al contenido principal
🔒 Modo vista previa. Las primeras quince lecciones de Foundations son gratis; esta es Pro. Inicia un trial de 7 días para desbloquear el editor, las pistas AI y el resto del programa. Tarjeta requerida, cancela cuando quieras en Dashboard.Iniciar trial de 7 días →
← CursosSenior Deep-DivesModule 1 · Concurrency internals · Recapasyncio.Semáforo para contrapresiónpredict26 / 161
+100 XP
Tarea
📝 **Pregunta:** Predice el resultado exacto. Cinco tareas (A-E) intentan ingresar \`async con sem\` donde \`sem = Semaphore(2)\`. Están programados por \`reunir\` en orden. ¿Cuál es el recuento máximo en vuelo? ¿En qué orden adquieren y liberan? 📋 Elige la respuesta correcta. 💡 **Pista:** Vuelve a leer la teoría anterior si no estás seguro.
Predice la salida

Lee el código con atención

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

¿Qué imprimirá el programa? Escribe aquí:

💬 Discusión

Sé el primero en hacer una pregunta o compartir un consejo.
Inicia sesión para unirte a la discusión. Leer es gratis.
Cargando discusión…