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

Mary-Kate Olsen
Libérer: 2024-11-02 13:52:02
original
325 Les gens l'ont consulté

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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!