WorksheetsPython Perfectionnement, AsyncIO
Total questions: 15
Worksheet time: 12mins
Qu'est-ce que asyncio dans le contexte de Python ?
Une bibliothèque de threading
Un framework pour l'exécution asynchrone de code
Une bibliothèque pour le traitement d'images
Un outil de gestion de base de données
Comment déclarer une coroutine avec asyncio?
def fonction()
async def fonction()
await def fonction()
function async():
Quel mot-clé est utilisé pour attendre qu'une coroutine se termine ?
wait
pause
await
yield
Lequel de ces choix n'est pas une fonctionnalité de asyncio ?
Gérer des centaines de connexions réseau simultanées
Planifier l'exécution de coroutines de manière concurrente
Manipuler des opérations sur les fichiers de manière asynchrone
Réaliser des opérations de calcul intensif en parallèle
Quel est le rôle de asyncio.run() dans l'exécution d'une coroutine ?
Il crée une nouvelle boucle d'événements et exécute la coroutine jusqu'à son achèvement.
Il exécute une coroutine déjà planifiée dans une boucle d'événements existante.
Il est principalement utilisé pour débugger des coroutines.
Il sert à initialiser les coroutines mais ne les exécute pas.
Quel est l'impact de l'utilisation de await devant une coroutine qui n'est pas définie avec async def dans asyncio?
Une erreur de syntaxe est générée.
Une erreur de type RuntimeError est levée.
Une erreur de type TypeError est levée.
Le code s'exécute sans erreur mais rien ne se passe.
Analysez le code suivant et indiquez quel comportement attendre:
Affiche "Fetching data..." puis "Data" après 2 secondes.
Affiche "Fetching data..." puis un objet coroutine.
Lève une exception TypeError.
Lève une exception RuntimeWarning: coroutine 'fetch_data' was never awaited
Analysez le code suivant et indiquez quel comportement attendre:
Affiche "Fetching data..." puis "Data" après 2 secondes.
Affiche "Fetching data..." puis un objet coroutine.
Lève une exception TypeError.
Lève une exception RuntimeError.
Quelle phrase est vraie concernant le gestionnaire de contexte async with en Python?
Il est utilisé pour libérer des ressources système après l'exécution d'un bloc de code.
Il est strictement équivalent à with
Il peut seulement être utilisé avec des objets fichier.
Il requiert que l'objet avec lequel il est utilisé implémente les méthodes aenter et aexit.
Complétez le code suivant pour qu'il imprime "Hello, world!" après un délai de 2 secondes.
(a)
Quelle fonction asyncio utiliseriez-vous pour exécuter trois coroutines simultanément et attendre que toutes aient terminé ?
Quelle sera la séquence exacte des sorties de ce programme ?
"Tâche 5 complétée après 5 secondes"
"Tâche 4 complétée après 4 secondes"
...
Tâche 1 complétée après 1 seconde".
L'ordre exact des sorties ne peut pas être prédit car il dépend de la façon dont les tâches se terminent.
Tâche 1 complétée après 1 seconde"
...
"Tâche 4 complétée après 4 secondes"
"Tâche 5 complétée après 5 secondes"
Quelle sera la séquence exacte des sorties de ce programme ?
"Tâche 1 complétée après 1 seconde"
"Tâche 2 complétée après 2 secondes"
....
"Tâche 5 complétée après 5 secondes"
"Tâche 5 complétée après 5 secondes"
"Tâche 4 complétée après 4 secondes"
...
"Tâche 1 complétée après 1 seconde"
L'ordre exact des sorties ne peut pas être prédit car il dépend de la façon dont les tâches se terminent.
Les résultats sont imprimés dans un ordre aléatoire, indépendant du délai de chaque tâche.
Quel est le résultat de l'exécution de ce script ?
Les tâches seront exécutées séquentiellement, d'abord tache1 puis tache2, et le script prendra 5 secondes pour s'exécuter.
Les tâches seront lancées simultanément et le script prendra environ 3 secondes pour s'exécuter.
Seule tache1 sera exécutée car tache2 sera annulée automatiquement par asyncio lorsqu’elle n'est pas attendue immédiatement.
Une erreur sera levée car les tâches ne peuvent pas être créées sans être directement attachées à un événement de l'event loop
Quelle est la conséquence potentielle de ne pas isoler les fonctions bloquantes des tâches asynchrones dans un programme utilisant asyncio ?
Une augmentation significative de la vitesse d'exécution des fonctions bloquantes.
Des erreurs de synchronisation entre les threads et la boucle d'événements.
Un blocage de la boucle d'événements, ce qui peut causer un ralentissement ou un arrêt complet de toutes les tâches asynchrones.
Une optimisation automatique de la boucle d'événements.
