This module provides various memoizing collections and decorators, including variants of the Python 3 Standard Library @lru_cache function decorator.
>>> from cachetools import LRUCache
>>> cache = LRUCache(maxsize=2)
>>> cache.update([('first', 1), ('second', 2)])
>>> cache
LRUCache([('second', 2), ('first', 1)], maxsize=2, currsize=2)
>>> cache['third'] = 3
>>> cache
LRUCache([('second', 2), ('third', 3)], maxsize=2, currsize=2)
>>> cache['second']
2
>>> cache['fourth'] = 4
>>> cache
LRUCache([('second', 2), ('fourth', 4)], maxsize=2, currsize=2)
For the purpose of this module, a cache is a mutable mapping of a
fixed maximum size. When the cache is full, i.e. by adding another
item the cache would exceed its maximum size, the cache must choose
which item(s) to discard based on a suitable cache algorithm. In
general, a cache's size is the total size of its items, and an item's
size is a property or function of its value, e.g. the result of
sys.getsizeof(value)
. For the trivial but common case that each
item counts as 1
, a cache's size is equal to the number of its
items, or len(cache)
.
Multiple cache classes based on different caching algorithms are implemented, and decorators for easily memoizing function and method calls are provided, too.
Install cachetools using pip:
pip install cachetools
Copyright (c) 2014-2016 Thomas Kemmer.
Licensed under the MIT License.