Skip to content

💾 persist expensive function calls to disk

License

Notifications You must be signed in to change notification settings

jla-gardner/locache

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

33 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

locache - a local cache for Python

PyPI PyPI - Downloads GitHub codecov

A single-file utility library for caching the results of deterministic and pure function calls to disk, exposed via the @persist decorator.

These caches are persistent across runs of the program. If changes to the function's source code are detected, the cache is reset. This can also be manually performed with the reset function.

Installation

locache is simple enough that you could have written it yourself. To use it in your project, either:

  • copy the locache.py file into your project
  • install it with pip install locache

Usage

locache provides 3 importable functions:

  • the @persist decorator
  • reset
  • verbose

@persist

Wrap a pure function with @persist to cache its results to disk. The only stipulation is that the function's arguments and return value must be pickle-able.

from locache import persist

@persist
def my_func(x, num=3):
    print("Hi from foo!")
    return x * num

my_func(1)        
# prints "Hi from foo!", returns 3
my_func(2, num=2) 
# prints "Hi from foo!", returns 4
my_func(1)        
# returns 3

reset(func: Callable)

Reset the cache for a given function.

from locache import reset

reset(my_func)
my_func(1) # prints "Hi from foo!", returns 3

verbose(yes: bool = True)

Turn on verbose logging.

from locache import verbose

reset(my_func)
verbose(yes=True)

my_func(1) 
# prints "cache miss for squared(1)"
# prints "Hi from foo!"
# returns 3

my_func(1)
# prints "cache hit for squared(1)"
# returns 3

About

💾 persist expensive function calls to disk

Topics

Resources

License

Stars

Watchers

Forks

Languages