在 Python 中清除記憶體

Muhammad Waiz Khan 2023年1月30日
  1. 在 Python 中使用 gc.collect() 方法清除記憶體
  2. 使用 del 語句清除 Python 中的記憶體
在 Python 中清除記憶體

本教程將研究在程式執行期間釋放或清除 Python 中記憶體的方法。當程式必須處理大檔案,處理大量資料或將資料保留在記憶體中時。在這些型別的方案中,程式通常可能會耗盡記憶體。

為了防止程式耗盡記憶體,我們必須通過清除變數或資料來釋放或清除記憶體,而程式中不再需要此變數或資料。我們可以使用以下方法清除 Python 中的記憶體。

在 Python 中使用 gc.collect() 方法清除記憶體

gc.collect(generation=2) 方法用於清除或釋放 Python 中未引用的記憶體。未引用的記憶體是無法訪問且無法使用的記憶體。可選引數 generation 是一個整數,值的範圍是 02。它使用 gc.collect() 方法指定要收集的物件的生成。

在 Python 中,壽命短的物件儲存在 0 代中,而壽命較長的物件儲存在 12 代中。每當呼叫具有預設 generation 值等於 2gc.collect() 時,將清除垃圾收集器維護的列表。

gc.collect() 方法可以幫助減少記憶體使用,並在程式執行期間清除未引用的記憶體。通過清除記憶體中不可訪問的資料,它可以防止程式用盡記憶體並崩潰。

使用 del 語句清除 Python 中的記憶體

gc.collect() 方法一起,del 語句對於在 Python 程式執行期間清除記憶體非常有用。del 語句用於刪除 Python 中的變數。我們可以首先刪除該變數,例如一些大列表或陣列等,我們確定程式不再需要這些變數。

下面的示例程式碼演示瞭如何使用 del 語句刪除變數。

import numpy as np

a = np.array([1, 2, 3])
del a

假設我們在刪除變數後嘗試使用或訪問該變數。在這種情況下,程式將返回 NameError 異常,因為我們試圖訪問的變數在變數名稱空間中不再存在。

示例程式碼:

import numpy as np

a = np.array([1, 2, 3])
del a
print(a)

輸出:

NameError: name 'a' is not defined

del 語句將變數從名稱空間中刪除,但不一定將其從記憶體中清除。因此,在使用 del 語句刪除變數之後,我們可以使用 gc.collect() 方法從記憶體中清除變數。

下面的示例程式碼演示瞭如何將 del 語句與 gc.collect() 方法一起使用,以清除 Python 中的記憶體。

import numpy as np
import gc

a = np.array([1, 2, 3])
del a
gc.collect()