Python學習 快取重用機制

2021-09-27 12:30:28 字數 2679 閱讀 4829

快取:程式會在記憶體裡開闢乙個空間,用來存放我們定義過的資料,方便我們在後續的程式裡能直接提取到資料,提高**效率。

重用:顧名思義,重複使用。

我們知道了快取和重用的含義,我們組合在一起就可以知道快取重用的大概意思:對於某些資料,再次定義時不是重新分配記憶體,而是檢查之前是否有過此資料快取,若有快取,則直接拿到該資料位址;若快取不存在時,才會分配記憶體空間。

快取機制的適用範圍: int(float),str,bool。

a is b:判斷a和b的記憶體位址是否相同

a == b:判斷a和b值是否相同

**塊:乙個模組,乙個函式,乙個類,乙個檔案等都是乙個**塊。

小資料池:python中有這樣特別分配了這樣的乙個記憶體,裡面存放的都是一些比較小的資料,當我們建立這些資料的時候,會直接從池子裡提取,而不再是重新建立。可以這麼理解,一些大的資料,必須之前在**塊中定義了才可以進行重用,而這些小資料,python內部就先給你定義好了,你可以直接進行重用機制。小資料池也是只針對 int(float),str,bool。

python快取重用規則

資料型別

重用規則

生效範圍

範圍在[-5,256]之間的整數

採用小資料池

全域性bool型別

字串型別

大於 256 的整數

只要在本**塊內建立過,就直接快取,後續不再建立。

本**塊

大於 0 的浮點型小數

小於 0 的浮點型小數

不觸發重用機制,每次都要額外建立

小於 -5 的整數

# 需要知道乙個函式就是乙個**塊,函式裡和函式外是不同的**塊

a = 257

b = 256

c = -5

d = -6

e = true

f = 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'

g = 0.1

h = -0.1

def test():

aa = 257

aaa = 257

bb = 256

bbb = 256

cc = -5

ccc = -5

dd = -6

ddd = -6

ee = true

eee = true

ff = 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'

fff = 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'

gg = 0.1

ggg = 0.1

hh = -0.1

hhh = -0.1

print('大於256的整數,定義在不同**塊裡', aa is a)

print('大於256的整數,定義在同乙個**塊裡', aaa is aa)

print('值為256的整數,定義在不同**塊裡', bb is b)

print('值為256的整數,定義在同乙個**塊裡', bbb is bb)

print('值為-5的整數,定義在不同**塊裡', cc is c)

print('值為-5的整數,定義在同乙個**塊裡', ccc is cc)

print('值小於-5的整數,定義在不同**塊裡', dd is d)

print('值小於-5的整數,定義在同乙個**塊裡', ddd is dd)

print('bool值,定義在不同**塊裡', ee is e)

print('bool值,定義在同乙個**塊裡', eee is ee)

print('字串,定義在不同**塊裡', ff is f)

print('字串,定義在同乙個**塊裡', fff is ff)

print('大於0的浮點數,定義在不同**塊裡', gg is g)

print('大於0的浮點數,定義在同乙個**塊裡', ggg is gg)

print('小於0的浮點數,定義在不同**塊裡', hh is h)

print('小於0的浮點數,定義在同乙個**塊裡', hhh is hh)

test()

# 這裡是結果

大於256的整數,定義在不同**塊裡 false

大於256的整數,定義在同乙個**塊裡 true

值為256的整數,定義在不同**塊裡 true

值為256的整數,定義在同乙個**塊裡 true

值為-5的整數,定義在不同**塊裡 true

值為-5的整數,定義在同乙個**塊裡 true

值小於-5的整數,定義在不同**塊裡 false

值小於-5的整數,定義在同乙個**塊裡 false

bool值,定義在不同**塊裡 true

bool值,定義在同乙個**塊裡 true

字串,定義在不同**塊裡 true

字串,定義在同乙個**塊裡 true

大於0的浮點數,定義在不同**塊裡 false

大於0的浮點數,定義在同乙個**塊裡 true

小於0的浮點數,定義在不同**塊裡 false

小於0的浮點數,定義在同乙個**塊裡 false

Python 快取重用機制

python 緩衝機制是為提高程式執行的效率服務的,實際上就是在 python 直譯器啟動時從記憶體空間中開闢出一 小部分,用來儲存高頻使用的資料,這樣可以大大減少高頻使用的資料建立時申請記憶體和銷毀時撤銷記憶體的開 銷。python 在儲存資料時,會根據資料的讀取頻繁程度以及記憶體占用情況來考慮,...

iOS UItableview重用機制

重用機制的定義就是乙個節省記憶體的機制,當我們的tableview有100或更多資料是如果沒有重用機制那樣會把記憶體很快佔滿 尤其使大多數我們在cell上面放上,是乙個很佔記憶體的東西 所以我們需要重用機制來解決,重用機制就是在我們螢幕的可顯示範圍內建立cell 其餘的復用這些cell,以我個人的理...

tableVIew重用機制

檢視 uitableview 標頭檔案,會找到 nsmutablearray visiablecells 和nsmutabledictnery reusabletablecells 兩個結構。visiablecells 內儲存當前顯示的 cells reusabletablecells 儲存可重用的...