Python記憶體管理

2021-10-24 06:55:27 字數 948 閱讀 2725

python的記憶體管理是依據物件引用次數管理的,物件被建立,分配記憶體給物件;物件引用計數為0,分配給物件的記憶體被**。

下面這些情況物件的引用計數+1:

物件被建立:a = create_object()

引用被賦值:b = a

被作為引數傳遞給函式:f(a)

作為容器物件的乙個元素:lst = [1,a]

下面這些情況物件的引用計數-1

離開作用域。比如f(a)函式結束時,a指向的物件引用減1。

引用被顯式的銷毀:del a

物件的乙個別名被賦值給其他物件:b = 1

物件從乙個容器物件中移除:lst.remove(a)

容器物件本身被銷毀:del lst。

from sys import getrefcount as count

class

test

(object):

def__del__

(self)

:print

("__del__ called!"

)def

__repr__

(self)

:return

"test object."

deff

(x):

print

(count(x)

)t = test(

)del t

程式執行的結果如下,列印的計數會比預想的多1,原因是a傳入count當引數時也算一次計數。

__del__ called!24

2324

program end.

__del__ called!

從執行結果可以知道,__del__魔法當程式計數為0或者程式退出的時候會被呼叫。

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

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

python 記憶體管理

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

Python記憶體管理

1.引用和物件 python是動態型別的語言 參考動態型別 物件與引用分離。賦值語句 a 1 中,整數1為乙個物件。而a是乙個引用。利用賦值語句,引用a指向物件1。python的內建函式id 它用於返回物件的身份 identity 其實,這裡所謂的身份,就是該物件的記憶體位址。a 1 print i...