class StashBackend(Backend): def __init__(self, archive, algorithm='lru:///', serializer='none:///'): self.stash = Stash(archive, algorithm, serializer, key_transform=(self.key_encode, self.key_decode)) @property def archive(self): return self.stash.archive @property def cache(self): return self.stash.cache def delete(self, keys): return self.stash.delete(keys) def flush(self): return self.stash.flush() def items(self): return self.stash.items() def iteritems(self): return self.stash.iteritems() def iterkeys(self): return self.stash.iterkeys() def itervalues(self): return self.stash.itervalues() def save(self): return self.stash.save() def __delitem__(self, key): return self.stash.__delitem__(key) def __getitem__(self, key): return self.stash.__getitem__(key) def __iter__(self): return self.stash.__iter__() def __len__(self): return self.stash.__len__() def __setitem__(self, key, value): return self.stash.__setitem__(key, value) def __getstate__(self): return {} def __setstate__(self, state): pass @staticmethod def key_encode(key): if type(key) is tuple: return '/'.join(key) return key @staticmethod def key_decode(key): key = str(key).split('/') if len(key) == 1: return key[0] return tuple(key)
# Calculate test statistics t_min = min(t_elapsed) * 1000 t_max = max(t_elapsed) * 1000 t_avg = (sum(t_elapsed) / len(t_elapsed)) * 1000 print '] min: %2dms, max: %2dms, avg: %2dms' % (t_min, t_max, t_avg) if __name__ == '__main__': repeat = int(raw_input('Repeat [10]: ') or 10) raw_input('[start (repeat: %r)]' % repeat) # Initialize library/matcher matcher = Matcher(matcher_cache, Plex.client) library = Library(matcher) # Fetch movies test(fetch_movies, repeat, library=library) print print "==========================================================" print # Fetch shows test(fetch_shows, repeat, library=library) # Flush caches matcher_cache.flush()