Heim > Artikel > Backend-Entwicklung > Können Sie ein Python-Generatorobjekt zur Wiederverwendung verjüngen?
Wenn Sie auf ein Generatorobjekt stoßen, das mehrere Werte ergeben hat, möchten Sie möglicherweise versuchen, es zur Wiederverwendung zu verjüngen. Dieses Streben entspringt dem Wunsch, die zeitaufwändige Vorbereitung zu vermeiden, die mit der Generatorerstellung verbunden ist.
Leider kann sich ein Generator im Gegensatz zu den Ouroboros nicht selbst regenerieren. Mehrere Strategien bieten jedoch Abhilfe:
Wie ein Phönix können Sie den Generator wiederbeleben, indem Sie seine übergeordnete Funktion erneut aufrufen:
<code class="python">y = FunctionWithYield() for x in y: print(x) y = FunctionWithYield() for x in y: print(x)</code>
Dieser Ansatz gewährleistet frische Berechnungen, geht jedoch mit der Wiederholung teurer Vorbereitungsschritte einher.
Bewahrung nutzen, Sie können die Ergebnisse des Generators in einer Datenstruktur speichern, die mehrere Iterationen ermöglicht :
<code class="python">y = list(FunctionWithYield()) for x in y: print(x) # Can iterate again: for x in y: print(x)</code>
Diese Methode schützt zwar vor sich wiederholenden Berechnungen, verursacht jedoch Speicheraufwand.
Die Wahl zwischen diesen Optionen stellt den klassischen Kompromiss zwischen Speicher dar und Verarbeitung. Option 1 verringert die Verarbeitungszeit, während Option 2 den Speicher belastet.
Obwohl tee, wie von anderen vorgeschlagen, eine Funktionalität bietet, die der Speicherpufferung ähnelt, verursacht es dennoch den gleichen Speicheraufwand und die gleichen Leistungsmerkmale als Option 2.
Das obige ist der detaillierte Inhalt vonKönnen Sie ein Python-Generatorobjekt zur Wiederverwendung verjüngen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!