懒的写了抄的大佬的代码,因为要存储的东西单个对象有几个G所以加了点gc:
class LRUCache(collections.OrderedDict):
def __init__(self, size=2):
#print(self.size)
self.size = size,
print(self.size)
self.cache = collections.OrderedDict()
def get(self, key):
#if self.cache.has_key(key):
if key in self.cache:
val = self.cache.pop(key)
self.cache[key] = val
else:
val = -1
return val
def set(self, key, val):
print(f"len {len(self.cache)},size{self.size}")
#if self.cache.has_key(key):
if key in self.cache:
val = self.cache.pop(key)
self.cache[key] = val
else:
if len(self.cache) >= self.size[0]:
item = self.cache.popitem(last=False)
delete(item)
self.cache[key] = val
def delete(item):
print("============================start delete=========================================")
print(item)
#del item[1]
path ="/".join(item[0].split("/")[:-3])
print("delete path : "+path)
subprocess.run(["rm","-r",path])
del item
gc.collect()
print("============================delete comlete=======================================")