LRU cache

Albert-Jan Roskam sjeik_appie at hotmail.com
Sat Feb 18 12:19:22 EST 2023


   On Feb 18, 2023 17:28, Rob Cliffe via Python-list <python-list at python.org>
   wrote:

     On 18/02/2023 15:29, Thomas Passin wrote:
     > On 2/18/2023 5:38 AM, Albert-Jan Roskam wrote:
     >>     I sometimes use this trick, which I learnt from a book by
     Martelli.
     >>     Instead of try/except, membership testing with "in"
     >> (__contains__) might
     >>     be faster. Probably "depends". Matter of measuring.
     >>     def somefunc(arg, _cache={}):
     >>         if len(_cache) > 10 ** 5:
     >>             _cache.pop()
     >>         try:
     >>             return _cache[arg]
     >>         except KeyError:
     >>             result = expensivefunc(arg)
     >>             _cache[arg] = result
     >>             return result
     >>     Albert-Jan
     >
     > _cache.get(arg) should be a little faster and use slightly fewer
     > resources than the try/except.
     >
     Provided that you can provide a default value to get() which will never
     be a genuine "result".

   =====
   This might be better than None:
   _cache.get(arg, Ellipsis)


More information about the Python-list mailing list