Create a gist now

Instantly share code, notes, and snippets.

What would you like to do?
Persisting a cache in Python to disk using a decorator
def persist_cache_to_disk(filename):
def decorator(original_func):
try:
cache = pickle.load(open(filename, 'r'))
except (IOError, ValueError):
cache = {}
atexit.register(lambda: pickle.dump(cache, open(filename, "w")))
def new_func(*args):
if tuple(args) not in cache:
cache[tuple(args)] = original_func(*args)
return cache[args]
return new_func
return decorator
# example use of the decorator
@persist_cache_to_disk('users.p')
def get_all_users():
# your method here
pass

shantanuo commented Jun 18, 2016 edited

This works from python command prompt. But it does not work from ipython notebook. A modified version can be found here.. https://gist.github.com/shantanuo/c6a376309d6bac6bd55bf77e3961b5fb

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment