/py-diskmemo

Primary LanguagePythonThe UnlicenseUnlicense

A simple disk-caching/memoizing decorator based on the disk-persistent dictionary in the standard library, shelve. I've found this thing to be very useful when trying experiments with lots of different parameter values: using diskmemo I don't have to re-write caching code for every function and I don't have to worry about restarting the interpreter.

Here's a simple usage example based on the standard memoized Fibonacci sequence computation.

import diskmemo

@diskmemo.memoize
def fib(n):
    "Return the nth Fibonacci number."
    if n in (0,1):
        return n
    return fib(n-1) + fib(n-2)

From a Python interpreter we can do this:

from fibdemo import fib
print fib(100) # <- way faster than naive recursion!

Then we can exit and re-enter the Python interpreter, re-import the function or re-define the same one, and

print fib(100) # <- instant!

The Fibonacci case isn't very inspiring, but if you have any deterministic code that you'd like to persistently memoize, this decorator can help!

It syncs to disk at every call.