मेरे पास एक पायथन फ़ंक्शन है जिसमें निर्धारिती परिणाम होता है। यह एक लंबे समय से चलाने के लिए ले जाता है और एक बड़ी उत्पादन उत्पन्न करता है:फ़ंक्शन संशोधित होने पर आउटपुट को पुन: उत्पन्न करने के लिए एक पायथन फ़ंक्शन को दबाकर
def time_consuming_function():
# lots_of_computing_time to come up with the_result
return the_result
मैं समय-समय पर time_consuming_function
संशोधित है, लेकिन मैं इसे फिर से चलाने, जबकि यह अपरिवर्तित है से बचने के लिए चाहते हैं। [time_consuming_function
केवल उन कार्यों पर निर्भर करता है जो यहां मानी गई प्रयोजनों के लिए अपरिवर्तनीय हैं; यानी इसमें पाइथन पुस्तकालयों से कार्य हो सकते हैं लेकिन मेरे कोड के अन्य टुकड़ों से नहीं जो मैं बदलूंगा।] समाधान जो मुझे स्वयं को बताता है वह आउटपुट को कैश करना और फ़ंक्शन के कुछ "हैश" को कैश करना है। यदि हैश बदलता है, तो फ़ंक्शन संशोधित कर दिया जाएगा, और हमें आउटपुट को पुन: उत्पन्न करना होगा।
क्या यह संभव या हास्यास्पद है?
अपडेट किया गया: उत्तरों के आधार पर, यह है कि मैं क्या करना चाहते हैं, करने के लिए "memoize" time_consuming_function
है बजाय छोड़कर तरह लग रहा है (या उनके अतिरिक्त) तर्क एक अपरिवर्तनीय समारोह में पारित कर दिया है, मैं चाहता हूँ एक फ़ंक्शन के लिए खाता जो स्वयं बदल जाएगा।
+1। – zdav
आप विधि को कैसे संशोधित करते हैं? क्या आप प्रोग्राम रन में हैश रखना चाहते हैं या यह एक रन के भीतर है लेकिन कुछ मॉड्यूल रीलोड में है? – doublep
मेरे पास एक स्क्रिप्ट फ़ाइल में विधि होगी; मैं इसे समय-समय पर हाथ से संशोधित करता हूं। एप्लिकेशन यह है कि यह फ़ंक्शन कुछ सिमुलेशन कोड में चलने के लिए "समस्या डेटा" उत्पन्न करेगा। मैं समय-समय पर समस्या को बदल दूंगा। –