你可以創(chuàng)建任意種類的緩存機(jī)制,有若干種方式來達(dá)到相同的效果,這完全取決于你的需要。
這里是一個(gè)一般的緩存:
from functools import wraps
def memoize(function):
memo = {}
@wraps(function)
def wrapper(*args):
if args in memo:
return memo[args]
else:
rv = function(*args)
memo[args] = rv
return rv
return wrapper
@memoize
def fibonacci(n):
if n < 2: return n
return fibonacci(n - 1) + fibonacci(n - 2)
fibonacci(25)
這里有一篇Caktus Group的不錯(cuò)的文章,在其中他們發(fā)現(xiàn)一個(gè)Django框架的由lru_cache導(dǎo)致的bug。讀起來很有意思。一定要打開去看一下。