Aller au contenu principal
🔒 Mode aperçu. Les quinze premières leçons Foundations sont gratuites ; celle-ci est Pro. Démarrez un trial de 7 jours pour débloquer l'éditeur, les conseils AI et le reste du programme. Carte requise, annulez à tout moment dans Dashboard.Démarrer le trial de 7 jours →
← CoursSenior Deep-DivesModule 8 · Async correctness patternsasyncio.Semaphore — bounded concurrency without blocking the looppredict126 / 161
+150 XP
Tâche
📝 **Tâche :** Prédisez le résultat exact. Le sémaphore limite la concurrence à 2 ; 5 tâches nommées sont planifiées via collect. Chaque tâche renvoie son propre nom. Prédisez la LISTE qui rassemble les retours - faites attention si l'ordre dans la sortie est l'ordre de SOUMISSION ou l'ordre d'ACHÈVEMENT. 📋 Implémentez la fonction ci-dessus. Les tests s'exécutent automatiquement. 💡 **Indice :** Relisez la théorie si vous êtes bloqué.
Prédis la sortie

Lis le code attentivement

import asyncio


async def fetch(sem: asyncio.Semaphore, name: str) -> str:
    async with sem:
        # Stand-in for a real I/O call.
        await asyncio.sleep(0.001)
        return name


async def main() -> list[str]:
    sem = asyncio.Semaphore(2)
    names = ["a", "b", "c", "d", "e"]
    results = await asyncio.gather(*[fetch(sem, n) for n in names])
    return results


print(asyncio.run(main()))

Que va afficher le programme ? Écris ici :

💬 Discussion

Soyez le premier à poser une question ou partager une astuce.
Connectez-vous pour rejoindre la discussion. La lecture est gratuite.
Chargement de la discussion…