python 物件緩衝池

2021-08-17 12:06:12 字數 1247 閱讀 7297

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...