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