openmmtools.cache.LRUCache

class openmmtools.cache.LRUCache(capacity=None, time_to_live=None)[source]

A simple LRU cache with a dictionary-like interface that supports maximum capacity and expiration.

It can be configured to have a maximum number of elements (capacity) and an element expiration (time_to_live) measured in number of accesses to the cache. Both read and write operations count as an access, but only successful reads (i.e. those not raising KeyError) increment the counter.

Parameters:
capacityint, optional

Maximum number of elements in the cache. When set to None, the cache has infinite capacity (default is None).

time_to_liveint, optional

If an element is not accessed after time_to_live read/write operations, the element is removed. When set to None, elements do not have an expiration (default is None).

Examples

>>> cache = LRUCache(capacity=2, time_to_live=3)

When the capacity is exceeded, the least recently used element is removed.

>>> cache['1'] = 1
>>> cache['2'] = 2
>>> elem = cache['1']  # read '1', now '2' is the least recently used
>>> cache['3'] = 3
>>> len(cache)
2
>>> '2' in cache
False

After time_to_live read/write operations an element is deleted if it is not used.

>>> elem = cache['3']  # '3' is used, counter is reset
>>> elem = cache['1']  # access 1
>>> elem = cache['1']  # access 2
>>> elem = cache['1']  # access 3
>>> len(cache)
1
>>> '3' in cache
False
Attributes:
capacity

Maximum number of elements that can be cached.

time_to_live

Number of read/write operations before an cached element expires.

Methods

empty()

Purge the cache.

__init__(capacity=None, time_to_live=None)[source]

Methods

__init__([capacity, time_to_live])

empty()

Purge the cache.

Attributes

capacity

Maximum number of elements that can be cached.

time_to_live

Number of read/write operations before an cached element expires.