skip to navigation
skip to content

picklecache 0.0.5

Cache functions with pickle and files

Cache the results of a function.

Simple use

Decorate the function with @cache(cachedir, **kwargs). For example,

def is_prime(number):
    for n in range(2, number):
        if number % n == 0:
            return False
    return True

Fancier uses

Non-default directory

If you pass no arguments to cache, as in the example above, the cache will be stored in a directory named after the function. To set a different directory, pass it as an argument.

def is_prime(number):
    for n in range(2, number):
        if number % n == 0:
            return False
    return True

I recommend storing your caches in dotted directories under your home directory, as you see above.


The kwargs get passed to the pickle_warehouse.Warehouse, so you can do fun things like changing the serialization function.

@cache('~/.http', serializer = pickle_warehouse.serializers.identity)
def get(url):
    return requests.get(url).text

Read more about the keyword arguments on the pickle-warehouse page.

Non-identifying arguments

If you want to pass an argument but not use it as an identifier, pass a non-keyword argument; those get passed along to the function but don’t form the identifier. For example,

def get(url, auth = None):
    return requests.get(url, auth = auth)

get('', auth = ('username', 'password')

Refreshing the cache

I find that I sometimes want to refresh the cache for a particular file, only. This is usually because an error occurred and I have fixed the error or because I am downloading files from a website that doesn’t work very well.

It would be nice to have a convenient way of refreshing these files. Until then, I suggest that you log the arguments to the function call that yields the cached error and then delete the corresponding file.

File Type Py Version Uploaded on Size
picklecache-0.0.5.tar.gz (md5) Source 2014-08-02 1KB