L'asynchronsime c'est compliqué. Faire un tutoriel la dessus est une tache bien difficile.
Je diviserai le tutoriel en deux parties.
1. Expliquer ce qu'est un itérable - itérateur (générateur)Il y a des objets qui ont la méthode "__iter__"....donc on les appelle des itérables.
Quand sur ces objets, on appelle la méthode "__iter__"....cela revoie un autre objet qu'on appelle "itérateur" ou "générateur"..qui a la méthode "__next__"
A chaque fois qu'on appelle next, python se souvient "au combientième" next on est rendu et exécute le code correspondant.
Mon avis : Si vous voulez des explications de ce type, il y a plein d'autres sources (même francophones) bien plus claires2. Utiliser ce qui est expliqué en partie 1 pour faire du code asynchroneL'auteur prend comme exemple de programme "une décrémentation de 10000 à 0". Ca prend quelques secondes.
Donc l'objectif est de lancer 10 décrémentations "en simultané".
...et pour cela l'auteur propose de faire ainsi :
- routine de décrémentation n°1 (premier passage) = on fait juste un -1 (donc on est rendu à 9999)
- routine de décrémentation n°2 (premier passage) = on fait juste un -1 (donc on est rendu à 9999)
- routine de décrémentation n°3 (premier passage) = on fait juste un -1 (donc on est rendu à 9999)
.....
- routine de décrémentation n°9 (premier passage) = on fait juste un -1 (donc on est rendu à 9999)
- routine de décrémentation n°1 (deuxième passage) = on fait encore juste un -1 (donc on est rendu à 9998)
- routine de décrémentation n°2 (deuxième passage) = on fait encore juste un -1 (donc on est rendu à 9998)
.....jusqu'à être rendu à 0 dans toutes les routine.
Donc avec des générateur, l'auteur a fait quelques chose qu'on savait déja :
Un processeur ne fait qu'une chose à la fois.
Si on veut faire tourner les routines A et B en même temps, et bien on va donner l'illusion du "en même temps" en faisant "un peu de A", "puis un peu de B", "puis de nouveau un peu de A", ......
3. Ma ConclusionPour la partie une, à vous devoir, si vous trouvez ce tutoriel bien pour comprendre les itérables, itérateurs et générateurs (pour moi c'est non)
Pour la partie 2, sachez que vous n'apprendrez pas à faire de l'asynchrone en python....vous aurez une démonstration (scolaire) que pour donner une impression de simultanéité, il faut faire une petit bout de A, puis un petit bout de B, puis un petite bout de A encore...
Dans la majorité des cas, le programmeur ne sait pas (sans creuser dans les libs) découper sa tache en plein de petites sous taches.....si il le pouvait il n'aurait même pas recherché "programmation asynchrone"...il aurait lui même géré son découpage.
Bref un peu déçu car j'ai vraiment perdu du temps à essayer de comprendre ce tutoriel.
0 |
0 |