關於LRU演算法用python的簡單實現

2021-09-19 12:50:37 字數 1448 閱讀 1667

記憶體管理的一種頁面置換演算法,對於在記憶體中但又不用的資料塊(記憶體塊)叫做lru,作業系統會根據哪		    些資料屬於lru而將其移出記憶體而騰出空間來載入另外的資料。

lru指的是最少使用策略(least recently used)

在python中我首先是會根據輸入動態生成乙個列表,以下為生成列表的**塊:

# 這邊進行相應列表的生成

data_list =

while true:

try:

list_num = int(input("請輸入列表數字:"))

except:

break

接下來則是進行演算法的邏輯操作:

# 進行演算法實現

while true:

try:

num = int(input("請輸入數字:"))

if num in data_list:

data_list.remove(num)

data_list.insert(0, num)

else:

if len(data_list) < 5:

data_list.insert(0, num)

else:

data_list.pop(-1)

data_list.insert(0, num)

print(data_list)

except:

break

完整的**片段如下:

"""lru淘汰演算法:

1。如果此資料已經被快取到鍊錶中,遍歷得到資料節點,將其從原位置刪除,然後再插入鍊錶頭部

2。如果資料沒有再快取鍊錶中:快取未滿, 則直接加入頭部

快取已滿, 則先刪除尾節點,再將新的節點插入到鍊錶

"""# 這邊進行相應列表的生成

data_list =

while true:

try:

list_num = int(input("請輸入列表數字:"))

except:

break

# 進行演算法實現

while true:

try:

num = int(input("請輸入數字:"))

if num in data_list:

data_list.remove(num)

data_list.insert(0, num)

else:

if len(data_list) < 5:

data_list.insert(0, num)

else:

data_list.pop(-1)

data_list.insert(0, num)

print(data_list)

except:

break

python實現LRU演算法

學習mysql資料庫時,了解了一下ib buffer pool的儲存機制,使用lru演算法施行將少用的資料淘汰,儲存使用更頻繁的資料。再基於3.6版本python的字典資料型別改變,想試試新字典預設有序的話能否直接使用於lru演算法。from collections import ordereddi...

LRU演算法的實現

0 推薦 lru演算法的實現 什麼是lru演算法lru是least recently used的縮寫,即最近最少使用頁面置換演算法,是為虛擬頁式儲存管理服務的.關於作業系統的記憶體管理,如何節省利用容量不大的記憶體為最多的程序提供資源,一直是研究的重要方向.而記憶體的虛擬儲存管理,是現在最通用,最成...

LRU演算法的實現

什麼是lru演算法?lru是least recently used的縮寫,即最近最少使用頁面置換演算法,是為虛擬頁式儲存管理服務的。關於作業系統的記憶體管理,如何節省利用容量不大的記憶體為最多的程序提供資源,一直是研究的重要方向。而記憶體的虛擬儲存管理,是現在最通用,最成功的方式 在記憶體有限的情況...