मैं एक जनरेटर समारोह है कि कुछ इस तरह चला जाता है है: के बजाय जैसे ही समारोह के रूप में कहा जाता है को चलाने के लिएमैं पहले कॉल के बजाए जेनरेटर फ़ंक्शन के लिए प्रारंभिक कोड कैसे चला सकता हूं?
def mygenerator():
next_value = compute_first_value() # Costly operation
while next_value != terminating_value:
yield next_value
next_value = compute_next_value()
मैं (जबकि पाश से पहले) प्रारंभ कदम चाहते हैं केवल जब जनरेटर पहला है उपयोग किया गया। ऐसा करने का एक अच्छा तरीका क्या है?
मैं ऐसा करना चाहता हूं क्योंकि जनरेटर एक अलग थ्रेड (या प्रक्रिया, या जो भी मल्टीप्रोसेसिंग उपयोग करता है) में चल रहा है और मैं थोड़ी देर के लिए वापसी का उपयोग नहीं करूँगा, और प्रारंभिक कुछ महंगा है, इसलिए मैं इसे प्रारंभिक करना चाहता हूं जबकि मैं मूल्यों का उपयोग करने के लिए तैयार हो रहा हूं।
यह "सही" तरीका है। अन्य हैक हैं। वे लिखने के लिए कम, बनाने और उपयोग करने के लिए अपने आप पर मजेदार हो सकते हैं, लेकिन बनाए रखने के लिए दबाने और दिमाग को ध्यान में रखना मुश्किल है। – jsbueno