OK, je ne te vois pas, mais je sais ce que tu ressens, tu doutes de moi en ce moment, tu
penses que les générateurs sont inutiles.
Vous n'arrêtez pas de dire qu'ils sont rapides et performants, mais je ne comprends pas vraiment.
Ce clavier LTH et ce suivant.
Et honnêtement, ça n'a tout simplement pas de sens.
Laissez-moi vous convaincre de leur véritable pouvoir.
Je vais sélectionner tous ces éléments et les supprimer, car je souhaite revenir à un exemple que nous avons
déjà utilisé.
Vous vous souvenez quand nous avons créé la performance du décorateur ?
Dans notre rubrique décoratrice.
En utilisant ce décorateur de performance, minimisons-le, je dois le faire.
Fonctions pour nous, une fonction de longue date qui utilise une plage.
Et une autre fonction de longue date qui utilise une plage, puis la convertit en liste.
Alors rappelez-vous, on crée une liste, puis à partir de cette liste qui a créé une mémoire sur nos ordinateurs, elle va aller
une par une et multiplier les choses par cinq par rapport à une plage, qui est un générateur intégré
à Python qui va juste un par un, maintenez le zéro et la mémoire et multipliez par cinq.
Gardez un en mémoire, mais multipliez par cinq et continuez, continuez, continuez et supprimez de la mémoire
tous les anciens nombres.
À votre avis, quelles seront les performances des deux ?
Testons-le.
Et au fait, je vais créer un lien vers l'exercice afin que vous puissiez le tester vous-même et jouer.
Alors faisons un long moment.
Et puis longtemps.
Placez vos paris, préparez-vous.
Découvrons-le.
La première fonction longue durée a pris un virgule six secondes.
Et puis la deuxième fonction a pris presque deux fois plus de temps.
C'est une assez grande différence, non?
Mais tout de suite, nous pouvons le dire.
Très bien, c'est définitivement plus performant que, eh bien, longtemps pour le relancer juste pour tester nos
hypothèses, assurez-vous qu'il est correct.
Cette fois, il a fallu un virgule huit puis deux virgule six.
Très bien.
C'est tellement plus rapide, même s'ils font tous les deux la même chose.
Et pensez à cela.
Si vous étiez Google, pensez à la quantité de données dont dispose Google si vous travaillez chez Google et imaginez
si c'était encore plus gros, si c'était encore plus long, si vous pouvez effectuer une tâche beaucoup plus rapidement.
Utilisez beaucoup moins de ressources que ce que Google a.
Je veux dire, ils vous aimeraient parce qu'avec les générateurs, ils étaient capables de ne pas conserver les choses en mémoire,
de ne pas avoir à consommer toutes ces ressources et à la place de traiter efficacement les données.
Et regarde par ici.
J'ai pu résoudre cette fonction en 16 secondes.
Je veux dire, oui, cela a pris beaucoup de temps, mais beaucoup de temps avant de pouvoir y arriver.
Cela a tué le processus.
S'il s'agissait d'un serveur Google, c'est un serveur qui vient de mourir et qui est complètement inutile.
Les générateurs sont donc vraiment, vraiment utiles lors du calcul de grands ensembles de données, en particulier si nous utilisons de longues boucles
où nous ne voulons pas vraiment stocker cette mémoire et nous n'avons pas besoin de tout calculer en même temps,
peut-être un par un.
Et beaucoup de bibliothèques en Python sous le capot utilisent des générateurs au lieu d'utiliser des listes car elles sont
tellement plus rapides.
Pensez donc à créer un générateur.
Tout ce que nous avons à faire est de créer une fonction génératrice que nous voulons.
Et puis ici, nous pouvons simplement boucler sur une valeur.
Peut-être que nous l'attribuons à une plage ou que nous pouvons simplement l'accepter comme paramètre et tout ce que nous devons
faire est simplement de donner ce résultat.
Et faites ce que nous voulons dans ce bloc, mais assurez-vous de mettre la fonction en pause afin qu'elle puisse être utilisée plus
tard.
En tant que fonction génératrice, nous pouvons donc faire quelque chose comme une boucle for et dire item dans la fonction gen et lui donner une
sorte de paramètre.