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 hashes)

Uploaded Source

Built Distribution

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

Uploaded Python 3

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