Python入門課程6 1 記憶體管理

2021-09-13 19:36:38 字數 968 閱讀 4610

在實際中,實現任何資料結構,都需要使用計算機的記憶體。

乙個計算機的儲存器基本可被視為乙個巨大的記憶體位元組的矩陣。

在python中,所有物件都儲存在記憶體池中,該記憶體池稱為記憶體堆python堆

例如,當執行操作a = a()時,a類的乙個新例項被建立,並被儲存在記憶體堆的某個地方。

當執行python程式時,python直譯器會負責協調作業系統空間的使用,並管理記憶體堆的使用。

1、相關概念

2、記憶體分配

執行時,環境應該以儘量減少外部碎片的方式來分配記憶體。

常用的方法有

並非只有在執行python程式時需要使用記憶體,python直譯器還會使用一些額外的記憶體。

1、執行時的呼叫棧

呼叫棧

呼叫棧的頂部是正在呼叫的活動記錄,也就是當前控制執行的函式活動。

棧的其餘元素是掛起等待呼叫的活動記錄,也就是函式已經呼叫另乙個函式,目前等待另乙個函式結束時返回控制給前函式。

(當乙個新函式被呼叫時,呼叫該函式的活動記錄被壓入棧。呼叫結束後,它的活動記錄從棧中彈出,python直譯器恢復暫停的呼叫過程)

活動記錄

每個活動記錄包含:

代表著函式呼叫的本地命名空間的字典(命名空間作為引數和區域性變數的識別符號對映到物件的值,但物件的值駐留在記憶體堆中);

還包含函式定義本身的引用;

還包含乙個特殊變數—程式計數器(包含當前正在執行的函式語句的位址。當乙個函式返回控制到另乙個函式時,該掛起函式儲存的程式計數器使得直譯器正確繼續該函式的執行)。

以上模式的實現,讓我們的程式可以使用遞迴模式。

2、運算元棧

在如算術表示式((a*b)+(c+d)*e)/f類似的語句中,直譯器通過使用運算元棧進行計算。

天池python基礎入門課程筆記

1.1變數 常量變數 變數名稱 1 不使用保留名 2 變數命名規定 必須以字母或者下劃線開頭 必須包含字母 數字 下劃線 大小寫敏感 保留名賦值操作 1.2型別 整數 浮點數 字串 布林值 空值 type 輸出型別 int 轉為整型 float 轉為浮點型 str 轉為字串 input 輸入資訊使用...

Python入門課程1 2 什麼是函式

乙個輸入一些值,進行一系列操作,再輸出 或不輸出一些值的過程 def count a,b n a b return n1 簽名 以def開始的第一行def count a,b 是乙個函式的簽名。該標誌建立了乙個新的識別符號 count 作為函式的名稱。並且設立了預期的引數個數,以及標識這些引數的名稱...

Python入門課程2 2 類的繼承

1 繼承 即允許基於乙個現有的類作為起點定義新的類的一種技術 2 父類與子類 在物件導向的術語中,通常描述現有的類為基類 bass class 父類 parent class 或者超類 superclass 基於現有類新定義的類為子類 subclass或childclass 下面以課程2.1中cre...