blob: 02a366e0b2d9014a7a5f529c56446254bf61464d [file] [log] [blame]
cachetools
========================================================================
This module provides various memoizing collections and decorators,
including a variant of the Python 3 Standard Library
``functools.lru_cache`` function decorator.
.. code-block:: pycon
>>> 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
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. the current size
of the cache exceeds 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 sum of the size of its items. If
the size of each items is 1, a cache's size is equal to the number of
its items, i.e. ``len(cache)``. An items's size may also be a
property or function of its value, e.g. the result of
``sys.getsizeof()``, or ``len()`` for string and sequence values.
This module provides various cache implementations based on different
cache algorithms, as well as decorators for easily memoizing function
and method calls.
Installation
------------------------------------------------------------------------
Install cachetools using pip::
pip install cachetools
Project Resources
------------------------------------------------------------------------
.. image:: http://img.shields.io/pypi/v/cachetools.svg
:target: https://pypi.python.org/pypi/cachetools/
:alt: Latest PyPI version
.. image:: http://img.shields.io/pypi/dm/cachetools.svg
:target: https://pypi.python.org/pypi/cachetools/
:alt: Number of PyPI downloads
- `Documentation`_
- `Issue Tracker`_
- `Source Code`_
- `Change Log`_
License
------------------------------------------------------------------------
Copyright (c) 2014 Thomas Kemmer.
Licensed under the `MIT License`_.
.. _functools.lru_cache: http://docs.python.org/3.4/library/functools.html#functools.lru_cache
.. _mutable: http://docs.python.org/dev/glossary.html#term-mutable
.. _mapping: http://docs.python.org/dev/glossary.html#term-mapping
.. _cache algorithm: http://en.wikipedia.org/wiki/Cache_algorithms
.. _Documentation: http://pythonhosted.org/cachetools/
.. _Issue Tracker: https://github.com/tkem/cachetools/issues/
.. _Source Code: https://github.com/tkem/cachetools/
.. _Change Log: http://raw.github.com/tkem/cachetools/master/Changes
.. _MIT License: http://raw.github.com/tkem/cachetools/master/LICENSE