python队列deque应用--LRU

 

LRU: Least recently used, 最近最少使用,建立缓存,超过一定阈值则删除。

 

代码

# -*- coding:utf-8 -*-
from collections import deque


class LRU:
    def __init__(self, maxsize):
        self.cacheSize = maxsize
        self.queue = deque()
        self.hashSet = set()

    def is_full(self):
        return len(self.queue) == self.cacheSize

    def enqueue(self, pageNum):
        if self.is_full():
            self.hashSet.remove(self.queue[-1])
            self.queue.pop()
        self.queue.appendleft(pageNum)
        self.hashSet.add(pageNum)

    def accessQueue(self, pageNum):
        if pageNum not in self.hashSet:
            self.enqueue(pageNum)
        elif pageNum != self.queue[0]:
            self.queue.remove(pageNum)
            self.queue.appendleft(pageNum)

    def printQueue(self):
        while len(self.queue) > 0:
            print(self.queue.popleft())


if __name__ == "__main__":
    lru = LRU(4)
    lru.accessQueue(1)
    lru.accessQueue(2)
    lru.accessQueue(3)
    lru.accessQueue(4)
    lru.accessQueue(5)
    lru.accessQueue(6)
    lru.printQueue()
# 结果
6
5
4
3

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值