haiv icon

How to cache a function

haiv | PRO | 04/23/13 11:48:15 PM UTC | 0 ⭐ | 406 👁️ | Never ⏰ | []
Python |

430 B

|

None

|

0 👍

/

0 👎

def cache(func):
    'Optimize a pure function by caching prior results'
    prior_results = {}
    @wraps(func)
    def newfunc(*args):
        if args in prior_results:
            return prior_results[args]
        result = func(*args)
        prior_results[args] = result
        return result
    return newfunc
 
@cache
def fibo(n):
    if n == 0: return 0
    if n == 1: return 1
    return fibo(n-1) + fibo(n-2)

Comments