在 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()