在 Python 中清除記憶體
本教程將研究在程式執行期間釋放或清除 Python 中記憶體的方法。當程式必須處理大檔案,處理大量資料或將資料保留在記憶體中時。在這些型別的方案中,程式通常可能會耗盡記憶體。
為了防止程式耗盡記憶體,我們必須通過清除變數或資料來釋放或清除記憶體,而程式中不再需要此變數或資料。我們可以使用以下方法清除 Python 中的記憶體。
在 Python 中使用 gc.collect() 方法清除記憶體
gc.collect(generation=2) 方法用於清除或釋放 Python 中未引用的記憶體。未引用的記憶體是無法訪問且無法使用的記憶體。可選引數 generation 是一個整數,值的範圍是 0 到 2。它使用 gc.collect() 方法指定要收集的物件的生成。
在 Python 中,壽命短的物件儲存在 0 代中,而壽命較長的物件儲存在 1 或 2 代中。每當呼叫具有預設 generation 值等於 2 的 gc.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()