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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for nicecache-0.0.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4ebc40dfd203bbdf180cf934a73d7b7edd94b33222a9ace43ef692406c8470af |
|
MD5 | b8ce1edd3cc36cfd06cd6e0124a166a2 |
|
BLAKE2b-256 | b6bb74ccdd4dd36e6543311a4018447225bb399bd7c69aac8ccbd4a303d7debd |