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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
|