import zlib import diskcache class ZLIBDISK(diskcache.Disk): def __init__(self, directory, **kwargs): super(ZLIBDISK, self).__init__(directory, **kwargs) def put(self, key): data = zlib.compress(pickle.dumps(key)) return super(ZLIBDISK, self).put(data) def get(self, key, raw): data = super(ZLIBDISK, self).get(key, raw) return pickle.loads(zlib.decompress(data)) def store(self, value, read, key=diskcache.core.UNKNOWN): if not read: value = zlib.compress(pickle.dumps(value)) return super(ZLIBDISK, self).store(value, read, key=key) def fetch(self, mode, filename, value, read): data = super(ZLIBDISK, self).fetch(mode, filename, value, read) if not read: data = pickle.loads(zlib.decompress(data)) return data cache = diskcache.Cache('cache', disk=ZLIBDISK) cache.set('data', data) cache.close()