Qu’est-ce qu’une coroutine en Python, et à quoi ça sert ? | Sam & Max
Article super éducatif et où j'ai appris pas mal de choses. Merci Sam & Max !
[edit] : Je me permets de recopier leu résumé de fin d'article
- yield permet de faire des générateurs
- On peut demander la prochaine valeur du générateur avec next(). Dans ce cas, le code s’exécute jusqu’au prochain yield.
- On peut envoyer une valeur au générateur avec send(). Dans ce cas, on DOIT partir d’un yield existant duquel on récupère la valeur envoyée via une assignation. Donc il faut au moins un next() avant d’utiliser un send() et un signe égal sur le yield.
send() va aussi aller au prochain yield et retourner sa valeur.
- Une coroutine n’est qu’une formalisation de la manière d’éffectuer une tâche avec un init, une exécution et une finalisation optionelle en utilisant un générateur. C’est une solution générique à un problème courant, mais plus léger qu’une classe.
- Généralement on décore les générateurs coroutines avec un décorateur @coroutine pour s’éviter d’appeler next() à la main et notifier l’usage qu’il est fait de ce générateur.
- On peut chaîner des coroutines comme on chaîne des générateurs, mais au lieu de lire les données une à une (PULL), on les envoie une par une (PUSH). Cela est pratique quand on ne sait pas à l’avance quand une nouvelle donnée va arriver.
Mon Dec 15 14:04:52 2014 - permalink -
-
http://sametmax.com/quest-ce-quune-coroutine-en-python-et-a-quoi-ca-sert/