Skip to main content

Caching mindful of computation/storage costs

Project description

Caching for Analytic Computations

Humans repeat stuff. Caching helps.

Normal caching policies like LRU aren't well suited for analytic computations where both the cost of recomputation and the cost of storage routinely vary by one million or more. Consider the following computations

# Want this
np.std(x)        # tiny result, costly to recompute

# Don't want this
np.transpose(x)  # huge result, cheap to recompute

Cachey tries to hold on to values that have the following characteristics

  1. Expensive to recompute (in seconds)
  2. Cheap to store (in bytes)
  3. Frequently used
  4. Recenty used

It accomplishes this by adding the following to each items score on each access

score += compute_time / num_bytes * (1 + eps) ** tick_time

For some small value of epsilon (which determines the memory halflife.) This has units of inverse bandwidth, has exponential decay of old results and roughly linear amplification of repeated results.

Example

>>> from cachey import Cache
>>> c = Cache(1e9, 1)  # 1 GB, cut off anything with cost 1 or less

>>> c.put('x', 'some value', cost=3)
>>> c.put('y', 'other value', cost=2)

>>> c.get('x')
'some value'

This also has a memoize method

>>> memo_f = c.memoize(f)

Status

Cachey is new and not robust.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cachey-0.2.1.tar.gz (6.5 kB view details)

Uploaded Source

Built Distribution

cachey-0.2.1-py3-none-any.whl (6.4 kB view details)

Uploaded Python 3

File details

Details for the file cachey-0.2.1.tar.gz.

File metadata

  • Download URL: cachey-0.2.1.tar.gz
  • Upload date:
  • Size: 6.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/45.2.0 requests-toolbelt/0.9.1 tqdm/4.36.1 CPython/3.7.6

File hashes

Hashes for cachey-0.2.1.tar.gz
Algorithm Hash digest
SHA256 0310ba8afe52729fa7626325c8d8356a8421c434bf887ac851e58dcf7cf056a6
MD5 25f1e2038b319badf1ba0469b8f6d27e
BLAKE2b-256 c69ce3c959c1601013bf8a72e8bf91ea1ebc6fe8a2305bd2324b039ee0403277

See more details on using hashes here.

File details

Details for the file cachey-0.2.1-py3-none-any.whl.

File metadata

  • Download URL: cachey-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 6.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/45.2.0 requests-toolbelt/0.9.1 tqdm/4.36.1 CPython/3.7.6

File hashes

Hashes for cachey-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 49cf8528496ce3f99d47f1bd136b7c88237e55347a15d880f47cefc0615a83c3
MD5 da4c687f69d948f07b48eb28137cce5e
BLAKE2b-256 57f0e24f3e5d5d539abeb783087b87c26cfb99c259f1126700569e000243745a

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page