Maison  >  Article  >  développement back-end  >  Pouvez-vous rajeunir un objet générateur Python pour le réutiliser ?

Pouvez-vous rajeunir un objet générateur Python pour le réutiliser ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-02 13:52:02311parcourir

Can You Rejuvenate a Python Generator Object for Reuse?

Rajeunir les objets générateurs en Python

Si vous rencontrez un objet générateur qui a généré plusieurs valeurs, vous pouvez chercher à le rajeunir pour le réutiliser. Cette quête découle du désir d'éviter la préparation fastidieuse associée à la création d'un générateur.

Malheureusement, contrairement aux ouroboros, un générateur ne peut pas se régénérer. Cependant, plusieurs stratégies offrent du répit :

Option 1 : Réanimer le générateur

Tel un phénix, vous pouvez ressusciter le générateur en invoquant à nouveau sa fonction parent :

<code class="python">y = FunctionWithYield()
for x in y: print(x)
y = FunctionWithYield()
for x in y: print(x)</code>

Cette approche garantit de nouveaux calculs, mais se fait au prix de la répétition d'étapes de préparation coûteuses.

Option 2 : Adopter la préservation

En adoptant la préservation, vous pouvez stocker les résultats du générateur dans une structure de données qui permet plusieurs itérations. :

<code class="python">y = list(FunctionWithYield())
for x in y: print(x)
# Can iterate again:
for x in y: print(x)</code>

Bien que cette méthode protège contre les calculs répétitifs, elle entraîne une surcharge de stockage.

Équilibrer la mémoire et le traitement

Le choix entre ces options présente le compromis classique entre la mémoire et le traitement. L'option 1 sacrifie le temps de traitement tandis que l'option 2 surcharge la mémoire.

Informations supplémentaires

Bien que tee, comme suggéré par d'autres, offre des fonctionnalités qui ressemblent à la mise en mémoire tampon, il entraîne toujours la même surcharge de stockage et les mêmes caractéristiques de performances. comme option 2.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn