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

Popular posts from this blog

python - Overriding the save method in Django ModelForm -

html - CSS autoheight, but fit content to height of div -

qt - How to prevent QAudioInput from automatically boosting the master volume to 100%? -