python装饰器实现cache

import time
import datetime
def cache(d={},cache_time=3):
    def _cache(func):
        def wrapper(*args,**kwargs):
            if d.get(args) is None or datetime.datetime.now().timestamp()-d[args][1]>cache_time:
                value = func(*args,**kwargs)
                d[args] = (value,datetime.datetime.now().timestamp())
                return value
            else:
                print('using cache')
                print(d[args][0])
                return d[args][0]
        return wrapper
    return _cache

@cache(cache_time=5)
def test_func(x,y):
    time.sleep(3)
    print(x**y)
    return x**y

test_func(1,2)
time.sleep(4)
test_func(1,2)
test_func(2,4)
test_func(2,4)

猜你喜欢

转载自blog.csdn.net/qq_32835305/article/details/86561995