python - Is there a decorator to simply cache function return values? -
निम्नलिखित पर विचार करें:
@property def नाम (स्वयं): ifattre नहीं है आत्म, '_name'): # महंगी गणना आत्म._name = 1 + 1 रिटर्न स्व ._नाम मैं नया हूँ, लेकिन मुझे लगता है कि कैशिंग को एक डेकोरेटर में तैयार किया जा सकता है केवल मुझे इसके जैसा कोई नहीं मिला;)
पीएस वास्तविक गणना अस्थिर मानों पर निर्भर नहीं करती
पायथन 3.2 से प्रारंभ करना एक अंतर्निर्मित डेकोरेटर है:
डेकोरेटर एक मेमोआइटिंग कॉल करने योग्य के साथ एक समारोह को लपेटने के लिए अधिकतम अधिकतम तक बचाता है हाल की कॉलें। यह समय बचा सकता है जब महंगी या I / O बाध्य फ़ंक्शन को समय-समय पर एक ही तर्क के साथ बुलाया जाता है।
कंप्यूटिंग के लिए एक एलआरयू कैश का उदाहरण:
@lru_cache (maxsize = none) def fib (n): यदि n & lt; 2: रिटर्न एन रिटर्न फिब (एन -1) + फिब (एन -2)> gt; & gt; & gt; [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610] और gt; श्रेणी (16) में n के लिए प्रिंट ([फिब (n)] ; & gt; & gt; यदि आप पायथन 2.x के साथ फंस गए हैं तो प्रिंट (फाइब क्यूबा_इनफ़ो ()) CacheInfo (हिट = 28, misses = 16, maxsize = none, currsize = 16) यहां अन्य संगत मेमोनाइजेशन लाइब्रेरीज़ की एक सूची है:
-
functools32| | -
repoze.lru| | -
pylru| | -
backports.functools_lru_cache| |
Comments
Post a Comment