python 的內建資料型別,數值型,字串,列表,字典等都會有自己的物件快取池,
這樣做的好處是,避免了頻繁的申請記憶體,釋放記憶體,這樣會極大的降低應用程式的執行速度,還會造成大量的記憶體碎片。因此提供物件快取機制是非常重要的。
以int 型別為例介紹python 物件快取池python 定義的數值快取範圍是 -5 ~ 257
原始碼定義如下:
class int
"pyobject *"
"&pylong_type"
[clinic start generated code]*/
/*[clinic end generated code: output=da39a3ee5e6b4b0d input=ec0275e3422a36e3]*/
#ifndef nsmallposints
#define nsmallposints 257
#endif
#ifndef nsmallnegints
#define nsmallnegints 5
#endif
_py_identifier(little);
_py_identifier(big);
/* convert a pylong of size 1, 0 or -1 to an sdigit */
#define medium_value(x) (assert(-1 <= py_size(x) && py_size(x) <= 1), \
py_size(x) < 0 ? -(sdigit)(x)->ob_digit[0] : \
(py_size(x) == 0 ? (sdigit)0 : \
(sdigit)(x)->ob_digit[0]))
對於-5 ~ 257 範圍內的數值, 建立後python 會將其加入快取池當中,當再次使用時,則直接從快取池中返回,而不需要申請記憶體,如果超出了這個範圍的數值,則每次都需要申請記憶體。
從下面的例子就能看出來,他們的記憶體位址,當數值在 -5 ~ 257 範圍內,記憶體位址都一樣
但是超出了該範圍時,python 對於每個數值都需要申請記憶體,因此記憶體位址會不一樣
操作緩衝池
什麼是緩衝池?容器,能夠裝一些東西 nsarray 有序的,通過下標來檢索 indexpath 下拉 上拉重新整理資料,只要一拉,有新資料加入,indexpath就會變化!nsset 無序的 取物件 anyobject 可以做什麼的緩衝池?uitouch,uitableview 的 cell 就是使...
python 常量池 python中的物件池
python中,一切皆為物件 id方法的返回值就是物件的記憶體位址。is運算子,如果引用的是同乙個物件則返回true,x is y類似 id x id y 1.小整數物件池 5,256 這些小整數被定義在了乙個整數物件池裡,當引用小整數時會自動引用整數物件池裡的物件,所以這些小整數不會重複建立,當多...
緩衝池的概念
一,緩衝的引入 中斷技術和通道技術的引入,提供了cpu,通道和i o裝置之間的並行操作的可能性,但由於計算機外設的發展會產生通道不足而產生的 瓶頸 現象,使並行程度受到限制,因此引入了緩衝技術.目的 1,改善cpu和i o裝置之間速度不匹配的情況 2,可以減少i o裝置對cpu的中斷次數及放寬對cp...