2
在Python3
的functools
插件中,有一個將會記憶函數調用的裝飾器。lru_cache轉儲到文件中並再次加載回內存
有沒有辦法讓我將這個緩存轉儲到一個文件中,然後再把這個文件加載回內存?
我在functools文檔中找不到此功能。推薦的方法是什麼才能達到上述要求,最好是僅涉及Python的解決方案?
在Python3
的functools
插件中,有一個將會記憶函數調用的裝飾器。lru_cache轉儲到文件中並再次加載回內存
有沒有辦法讓我將這個緩存轉儲到一個文件中,然後再把這個文件加載回內存?
我在functools文檔中找不到此功能。推薦的方法是什麼才能達到上述要求,最好是僅涉及Python的解決方案?
我不知道解決此問題的標準方法。 但是你可以寫你的註釋是這樣的:
def diskcached(cachefile, saveafter=1):
def cacheondisk(fn):
try:
with open(cachefile, 'rb') as f:
cache = pickle.load(f)
except:
cache = {}
unsaved = [0]
@wraps(fn)
def usingcache(*args, **kwargs):
try:
key = hash((args, kwargs))
except TypeError:
key = repr((args, kwargs))
try:
ret = cache[key]
except KeyError:
ret = cache[key] = fn(*args, **kwargs)
unsaved[0] += 1
if unsaved[0] >= saveafter:
with open(cachefile, 'wb') as f:
pickle.dump(cache, f)
unsaved[0] = 0
return ret
return usingcache
return cacheondisk
與
@diskcached("filename_to_save")
def your_function():
...
可能重複使用:http://stackoverflow.com/questions/15585493/store-the-cache-to-a -file-functools-LRU緩存功能於蟒蛇-3-2 – MaxU