Cache在Python中的实现-AOP内置实现

Python自带的AOP Cache

JAVA中可以通过AOP很容易的实现方法的cache, 其实Python比JAVA做的更进一步,直接在核心库中就实现了.

  • 示例
from functools import lru_cache
import time
import numpy as np

#maxsiez设置了这个方法的case size只有2个,超过就会删除最近最少使用
@lru_cache(maxsize=2)
def test_lru(seed):   
    return np.random.randint(9)
  • Cache不溢出
for i in range(0, 6):
    print(f'2 diff paras, not over maxsize. input:{i%2} output:{test_lru(i%2)}')

##没有超出Cache的size(2),所以反复调用,相同参数返回相同值
2 diff paras, not over maxsize. input:0 output:8
2 diff paras, not over maxsize. input:1 output:3
2 diff paras, not over maxsize. input:0 output:8
2 diff paras, not over maxsize. input:1 output:3
2 diff paras, not over maxsize. input:0 output:8
2 diff paras, not over maxsize. input:1 output:3
  • Cache溢出
for i in range(0, 6):
    print(f'3 diff paras, over maxsize. input:{i%3},  output:{test_lru(i%3)}')

##超出Cache的size(2),有3个不同的参数,当再次调用相同参数时,得到了不同的结果(也就是再次调用时,不是从Cache中取到的)
3 diff paras, over maxsize. input:0,  output:8
3 diff paras, over maxsize. input:1,  output:3
3 diff paras, over maxsize. input:2,  output:7
3 diff paras, over maxsize. input:0,  output:4
3 diff paras, over maxsize. input:1,  output:3
3 diff paras, over maxsize. input:2,  output:1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值