Skip to content

Instantly share code, notes, and snippets.

@rdeaton
Created January 14, 2012 18:30

Revisions

  1. Robert Deaton created this gist Jan 14, 2012.
    20 changes: 20 additions & 0 deletions gistfile1.py
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,20 @@
    def __call__(self, *args):
    from spyral import director
    frame = director.get_tick()
    if director.get_scene() is not self.scene:
    self.scene = director.get_scene()
    self.cache = {}
    if frame - self.last_clear > 100:
    self.cache = dict((key,value) for key,value in self.cache.items() if frame - value[1] > 250)
    self.last_clear = frame
    try:
    data, oldframe = self.cache[args]
    self.cache[args] = (data, frame)
    return data
    except KeyError:
    res = self.func(*args)
    self.cache[args] = (res, frame)
    return res
    except TypeError:
    print "WARNING: Unhashable type passed to memoize2. Reconsider using this decorator"
    return self.func(*args)