Skip to main content

Cache data between program runs (then forget about it!)

Project description

nicecache

A cache that persists data between runs. Trust me, you need this.

@functools.cache is nice, but there's a slight problem -- each program starts its own cache fresh. In comes @nicecache.nicecache. Use it just like you'd use @functools.cache, but rest assured that you really only have to compute this once and they'll persist across runs (by saving to disk!).


Uses diskcache to manage things behind the scenes.

@nicecache decorator

Got some slow data-loading or preprocessing that you'd rather just compute once? Frustrated that functools.cache spawns a new cache each time you re-run your program? You're in the right place.

Here's a really simple example:

from time import time
from nicecache import nicecache
@nicecache(tmp_cache_dir)
def slowtimes(a, b):
    print('saving to cache:', (a, b))
    time.sleep(5)
    return a * b

def test():
    t1 = time()
    print(slowtimes(5, 3))
    t2 = time()
    print(f'Func 1 time: {t2-t1}s')
    print(slowtimes(5, 3))
    t3 = time()
    print(f'Func 2 time: {t3-t2}s')
    print(slowtimes(4, 2))
    t4 = time()
    print(f'Func 3 time: {t4-t3}s')
    print(slowtimes(4, 2))
    t5 = time()
    print(f'Func 4 time: {t5-t4}s')
saving to cache: (5, 3)
15
Func 1 time: 5.0264012813568115
15
Func 2 time: 0.0017404556274414062
saving to cache: (4, 2)
8
Func 3 time: 5.011389970779419
8
Func 4 time: 0.0015897750854492188

Specifying a cache path

By default values are cached to ~/.nicecache. Specify a different folder path by passing an argument to the decorator. For example, @nicecache('/tmp/cache/path').

NiceCache

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

nicecache-0.0.1.tar.gz (3.0 kB view details)

Uploaded Source

Built Distribution

nicecache-0.0.1-py3-none-any.whl (3.0 kB view details)

Uploaded Python 3

File details

Details for the file nicecache-0.0.1.tar.gz.

File metadata

  • Download URL: nicecache-0.0.1.tar.gz
  • Upload date:
  • Size: 3.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/50.3.0 requests-toolbelt/0.9.1 tqdm/4.48.0 CPython/3.8.3

File hashes

Hashes for nicecache-0.0.1.tar.gz
Algorithm Hash digest
SHA256 f8a281ba7da24436c51e57514b11383ab5078bbd25351f4ea920a7bce5bd4c42
MD5 d08236f45c7cca6364f9d057971a340a
BLAKE2b-256 e8adaf34fd575539f7ec3fab76f57a57f9cd0d930c5939027eafca15f1374ff7

See more details on using hashes here.

File details

Details for the file nicecache-0.0.1-py3-none-any.whl.

File metadata

  • Download URL: nicecache-0.0.1-py3-none-any.whl
  • Upload date:
  • Size: 3.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/50.3.0 requests-toolbelt/0.9.1 tqdm/4.48.0 CPython/3.8.3

File hashes

Hashes for nicecache-0.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 4ebc40dfd203bbdf180cf934a73d7b7edd94b33222a9ace43ef692406c8470af
MD5 b8ce1edd3cc36cfd06cd6e0124a166a2
BLAKE2b-256 b6bb74ccdd4dd36e6543311a4018447225bb399bd7c69aac8ccbd4a303d7debd

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