Sobes.tech
Middle

Qu'est-ce que la programmation asynchrone (async) ?

sobes.tech IA

Réponse de l'IA

La programmation asynchrone est un paradigme qui permet d’exécuter plusieurs tâches simultanément sans bloquer le fil d’exécution principal du programme. Cela est réalisé grâce à une utilisation efficace du temps d’attente (par exemple, lors d’opérations d’entrée/sortie).

Concepts principaux :

  • Coroutines : Fonctions spéciales qui peuvent suspendre leur exécution et la reprendre plus tard. Déclarées avec async def.
  • Boucle d’événements : L’orchestrateur principal qui gère l’exécution des coroutines, surveille les événements et passe d’une tâche à l’autre lorsque l’une d’elles attend.
  • await : Mot-clé pour suspendre l’exécution d’une coroutine jusqu’à ce que l’opération attendue soit terminée (par exemple, appeler une autre coroutine ou attendre un résultat d’E/S).

Exemple :

// Exemple de fonction asynchrone
import asyncio

async def fetch_url(url):
    print(f"Démarrage du chargement : {url}")
    await asyncio.sleep(2) // Simulation d’une opération longue (par exemple, requête réseau)
    print(f"Chargement terminé : {url}")

async def main():
    # Créer des tâches à partir de coroutines
    task1 = asyncio.create_task(fetch_url("http://example.com/page1"))
    task2 = asyncio.create_task(fetch_url("http://example.com/page2"))

    # Attendre la fin des deux tâches
    await task1
    await task2

// Lancer la boucle d’événements
if __name__ == "__main__":
    asyncio.run(main())

Avantages :

  • Amélioration des performances : Surtout pour les tâches liées à l’E/S (requêtes réseau, travail avec des fichiers).
  • Meilleuse utilisation des ressources : Aucun besoin de créer plusieurs threads ou processus, ce qui réduit les coûts supplémentaires.
  • Maintien de la réactivité : Le fil principal n’est pas bloqué, ce qui est important pour les applications interactives ou les serveurs.

La programmation asynchrone convient à :

  • Les serveurs web (par exemple, avec asyncio ou FastAPI).
  • Le parsing de sites web.
  • Le travail avec des bases de données.
  • Toute tâche liée à l’attente de ressources externes.