python队列deque应用--LRU

本文详细介绍了一种常用的缓存淘汰策略——LRU(最近最少使用)算法,并提供了基于Python的实现代码。通过一个简单的队列和哈希集合,实现了LRU缓存的基本操作,包括插入、访问和打印队列,展示了当缓存满时如何根据最近最少使用的页面进行淘汰。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

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、付费专栏及课程。

余额充值