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

被折叠的 条评论
为什么被折叠?



