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
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | f8a281ba7da24436c51e57514b11383ab5078bbd25351f4ea920a7bce5bd4c42 |
|
MD5 | d08236f45c7cca6364f9d057971a340a |
|
BLAKE2b-256 | e8adaf34fd575539f7ec3fab76f57a57f9cd0d930c5939027eafca15f1374ff7 |
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4ebc40dfd203bbdf180cf934a73d7b7edd94b33222a9ace43ef692406c8470af |
|
MD5 | b8ce1edd3cc36cfd06cd6e0124a166a2 |
|
BLAKE2b-256 | b6bb74ccdd4dd36e6543311a4018447225bb399bd7c69aac8ccbd4a303d7debd |