Junior — Middle
Expliquez le mécanisme de fonctionnement de la bibliothèque asyncio pour la programmation asynchrone en Python.
sobes.tech IA
Réponse de l'IA
La bibliothèque asyncio en Python implémente un modèle de programmation asynchrone basé sur une boucle d'événements (event loop). Elle permet d'écrire un code non bloquant qui peut exécuter plusieurs opérations d'entrée/sortie en parallèle, sans créer plusieurs threads.
Composants principaux et principes de fonctionnement:
- Event Loop — boucle centrale qui gère l'exécution des tâches et le traitement des événements.
- Fonctions coroutine (déclarées avec
async def) — fonctions pouvant suspendre leur exécution avecawait, permettant à d'autres tâches de s'exécuter en même temps. - Futures et Tâches (Tasks) — objets représentant des opérations différées.
Exemple:
import asyncio
async def fetch_data():
print('Start fetching')
await asyncio.sleep(1) # simulation d'une opération asynchrone
print('Done fetching')
return {'data': 123}
async def main():
result = await fetch_data()
print(result)
asyncio.run(main())
Dans cet exemple, asyncio.run lance la boucle d'événements, qui exécute la coroutine main. À l'intérieur de main, on appelle fetch_data, qui se suspend à await asyncio.sleep(1), permettant à la boucle d'événements de passer à d'autres tâches (si elles existent). Cela permet d'utiliser efficacement les ressources, notamment lors de travaux avec des opérations réseau ou d'entrée/sortie.