Python記憶體管理

2021-08-21 18:12:00 字數 1094 閱讀 5000

1. 引用和物件

python是動態型別的語言(參考動態型別),物件與引用分離。賦值語句「a=1」中,整數1為乙個物件。而a是乙個引用。利用賦值語句,引用a指向物件1。

python的內建函式id()。它用於返回物件的身份(identity)。其實,這裡所謂的身份,就是該物件的記憶體位址。

a = 1   

print(id(a))

print(hex(id(a)))

11246696

『0xab9c68』

當我們建立多個等於1的引用時,實際上是讓所有這些引用指向同乙個物件。

a = 1 

b = 1

print

(id(a))

print

(id(b))

上面的程式返回

11246696

11246696

可見a和b實際上是指向同乙個物件的兩個引用。為了檢驗兩個引用指向同乙個物件,我們可以用is關鍵字。is用於判斷兩個引用所指的物件是否相同。

# true

a = 1

b = 1

print(a is b)

# true

a = "good"

b = "good"

print(a is b)

# false

a = "very good morning"

b = "very good morning"

print(a is b)

# false

a =

b =

print(a is b)

可以看到,由於python快取了整數和短字串,因此每個物件只存有乙份。長的字串和其它物件可以有多個相同的物件,可以使用賦值語句建立出新的物件。

在python中,每個物件都有存有指向該物件的引用總數,即引用計數(reference count)。

未完待續

python 記憶體分析 python記憶體管理分析

記憶體管理,對於python這樣的動態語言,是至關重要的一部分,它在很大程度上甚至決定了python的執行效率,因為在python的執行中,會建立和銷毀大量的物件,這些都涉及到記憶體的管理。小塊空間的記憶體池 在python中,許多時候申請的記憶體都是小塊的記憶體,這些小塊記憶體在申請後,很快又會被...

python 記憶體管理

記憶體管理,對於python這樣的動態語言,是至關重要的一部分,它在很大程度上甚至決定了python的執行效率,因為在python的執行中,會建立和銷毀大量的物件,這些都涉及到記憶體的管理。小塊空間的記憶體池 在python中,許多時候申請的記憶體都是小塊的記憶體,這些小塊記憶體在申請後,很快又會被...

Python記憶體管理

python的記憶體管理是依據物件引用次數管理的,物件被建立,分配記憶體給物件 物件引用計數為0,分配給物件的記憶體被 下面這些情況物件的引用計數 1 物件被建立 a create object 引用被賦值 b a 被作為引數傳遞給函式 f a 作為容器物件的乙個元素 lst 1,a 下面這些情況物...