Ich habe eine Generatorfunktion, die ungefähr so aussieht:
%Vor%Ich möchte, dass der Initialisierungsschritt (vor der while-Schleife) ausgeführt wird, sobald die Funktion aufgerufen wird, und nicht nur, wenn der Generator zum ersten Mal verwendet wird. Was ist ein guter Weg, dies zu tun?
Ich möchte dies tun, weil der Generator in einem separaten Thread (oder Prozess oder was auch immer Multiprocessing verwendet) läuft, und ich werde die Rückkehr für eine kurze Zeit nicht verwenden, und die Initialisierung ist etwas teuer, also ich möchte, dass es die Initialisierung durchführt, während ich mich bereit mache, die Werte zu verwenden.
Ich nehme an, Sie können nach Abschluss dieser ersten Anweisung keine hinzufügen, dann in Ihrem aufrufenden Code:
%Vor%Für meinen Anwendungsfall habe ich eine modifizierte Version von @ncoghlan-Antwort verwendet, die jedoch in eine Factory-Funktion eingebettet wurde, um die Generierung zu dekorieren Funktion:
%Vor%Dann dekoriere einfach die Funktion:
%Vor%und der erste Wert wird sofort berechnet, und das Ergebnis ist transparent.
Tags und Links python generator multiprocessing eager