python-cache

python3.2 之后加入标准库的 缓存

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36


def memoize(func):
cache = dict()

def memoized_func(*args):
if args in cache:
return cache[args]
result = func(*args)
cache[args] = result
return result

return memoized_func


def fibonacci(n):
if n == 0:
return 0
elif n == 1:
return 1
return fibonacci(n - 1) + fibonacci(n - 2)


memoized_fibonacci = memoize(fibonacci)

memoized_fibonacci.__closure__[0].cell_contents

import functools

@functools.lru_cache(maxsize=128)
def fibonacci(n):
if n == 0:
return 0
elif n == 1:
return 1
return fibonacci(n - 1) + fibonacci(n - 2)