18.5. asyncio — Entrées/Sorties asynchrone, boucle d’évènements, coroutines et tâches

Nouveau dans la version 3.4.

Code source : Lib/asyncio/


Ce module fournit l’infrastructure pour écrire des programmes à fil d’exécution unique (single-thread en anglais) mais permettant l’exécution de code concurrent en utilisant les coroutines, les accès multiplexés aux entrées-sorties par l’intermédiaire de sockets ou autres ressources, la gestion de clients et serveurs réseaux et d’autres fonctions primitives associées. Voici une liste plus détaillée du contenu du paquet :

  • une boucle d’évènements prête à l’emploi dont les implémentations sont spécifiques à leur plateforme ;

  • Des abstractions pour les couches transport et protocole (similaire à celles proposées par Twisted) ;

  • pour la gestion effective de TCP, UDP, SSL, la communication inter-processus par tubes, les appels différés, et autres (certains peuvent être dépendant du système) ;

  • une classe Future qui imite celle du concurrent.futures module, mais qui est adaptée pour fonctionner avec la boucle d’évènements ;

  • des coroutines et tâches qui se basent sur yield from (PEP 380), pour écrire du code concurrent de manière séquentielle ;

  • annulation de la gestion de la classe Futures et coroutines ;

  • des primitives de synchronisation à utiliser entre des coroutines dans un fil d’exécution unique, en imitant celles présentes dans le module threading ;

  • une interface pour déléguer des tâches à un groupe de fils d’exécutions, lorsque vous avez absolument besoin d’utiliser une bibliothèque qui effectue des entrées-sorties bloquantes.

Programmer de façon asynchrone est plus complexe que programmer d’une façon séquentielle : lisez la page Develop with asyncio qui liste les pièges fréquents et explique la manière de les éviter. Activer le mode de débogage d’asyncio pendant le développement afin de détecter les problèmes courants.

Table des matières :

Voir aussi

Le module asyncio a été présenté dans la PEP 3156. La PEP 3153 décrit les motivations premières concernant les couches transports et protocoles.