Just a snippet of code because every once in a while I need something like the classic memoize decorator but am working on a CentOS 4 bix (with python 2.3!)
I am still testing it, and am not even sure it really works, but it should be close.
cache=memcache.Client(['127.0.0.1:11211'], debug=0) cachetimeout=30 def memoize(fun): def inner(*args, **kwargs): key=repr(fun)+repr(args)+repr(kwargs) cached = cache.get(key) if cached is None: val = fun(*args, **kwargs) print "Setting: ",key, "to: ",val cache.set(key,val,cachetimeout) return val return cached return inner
And later inside a class:
def myfun(self,arg): : : myfun=memoize(myfun)
And that's it. The basic idea I stole from a blog who was inspired by a Paul Graham book. It can be trivially turned into a decorator, of course (but then only works on 2.4 and later).