Python 2系列版本

你可以创建任意种类的缓存机制,有若干种方式来达到相同的效果,这完全取决于你的需要。
这里是一个一般的缓存:

  1. from functools import wraps
  2. def memoize(function):
  3. memo = {}
  4. @wraps(function)
  5. def wrapper(*args):
  6. if args in memo:
  7. return memo[args]
  8. else:
  9. rv = function(*args)
  10. memo[args] = rv
  11. return rv
  12. return wrapper
  13. @memoize
  14. def fibonacci(n):
  15. if n < 2: return n
  16. return fibonacci(n - 1) + fibonacci(n - 2)
  17. fibonacci(25)

这里有一篇Caktus Group的不错的文章,在其中他们发现一个Django框架的由lru_cache导致的bug。读起来很有意思。一定要打开去看一下。