python内容限制_限制python字典的大小

class LRU_Cache:

def __init__(self, original_function, maxsize=1000):

self.original_function = original_function

self.maxsize = maxsize

self.mapping = {}

PREV, NEXT, KEY, VALUE = 0, 1, 2, 3 # link fields

self.head = [None, None, None, None] # oldest

self.tail = [self.head, None, None, None] # newest

self.head[NEXT] = self.tail

def __call__(self, *key):

PREV, NEXT = 0, 1

mapping, head, tail = self.mapping, self.head, self.tail

link = mapping.get(key, head)

if link is head:

value = self.original_function(*key)

if len(mapping) >= self.maxsize:

old_prev, old_next, old_key, old_value = head[NEXT]

head[NEXT] = old_next

old_next[PREV] = head

del mapping[old_key]

last = tail[PREV]

link = [last, tail, key, value]

mapping[key] = last[NEXT] = tail[PREV] = link

else:

link_prev, link_next, key, value = link

link_prev[NEXT] = link_next

link_next[PREV] = link_prev

last = tail[PREV]

last[NEXT] = tail[PREV] = link

link[PREV] = last

link[NEXT] = tail

return value

if __name__ == '__main__':

p = LRU_Cache(pow, maxsize=3)

for i in [1,2,3,4,5,3,1,5,1,1]:

print(i, p(i, 2))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值