Limpar memória em Python

Muhammad Waiz Khan 30 janeiro 2023
  1. Limpar memória em Python usando o método gc.collect()
  2. Limpar memória em Python usando a instrução del
Limpar memória em Python

Este tutorial examinará os métodos para liberar ou limpar memória em Python durante a execução do programa. Quando um programa tem que lidar com arquivos grandes, processar uma grande quantidade de dados ou manter os dados na memória. Nesses tipos de cenários, o programa geralmente pode ficar sem memória.

Para evitar que o programa fique sem memória, temos que liberar ou limpar a memória limpando a variável ou os dados, que não são mais necessários no programa. Podemos limpar a memória em Python usando os métodos a seguir.

Limpar memória em Python usando o método gc.collect()

O método gc.collect(generation=2) é usado para limpar ou liberar a memória não referenciada em Python. A memória não referenciada é a memória que está inacessível e não pode ser usada. O argumento opcional generation é um número inteiro cujo valor varia de 0 a 2. Ele especifica a geração dos objetos a serem coletados usando o método gc.collect().

No Python, os objetos de curta duração são armazenados na geração 0 e os objetos com um tempo de vida mais longo são armazenados na geração 1 ou 2. A lista mantida pelo coletor de lixo é limpa sempre que gc.collect() com valor generation padrão igual a 2 é chamado.

O método gc.collect() pode ajudar a diminuir o uso de memória e limpar a memória não referenciada durante a execução do programa. Ele pode evitar que o programa fique sem memória e trave, limpando os dados inacessíveis da memória.

Limpar memória em Python usando a instrução del

Junto com o método gc.collect(), a instrução del pode ser bastante útil para limpar a memória durante a execução do programa Python. A instrução del é usada para excluir a variável em Python. Podemos primeiro deletar a variável como uma grande lista, ou array, etc., sobre a qual temos certeza de que não são mais exigidas pelo programa.

O código de exemplo a seguir demonstra como usar a instrução del para excluir a variável.

import numpy as np

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

Suponha que tentemos usar ou acessar a variável após excluí-la. Nesse caso, o programa retornará a exceção NameError, pois a variável que estamos tentando acessar não existe mais no namespace da variável.

Código de exemplo:

import numpy as np

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

Resultado:

NameError: name 'a' is not defined

A instrução del remove a variável do namespace, mas não a limpa necessariamente da memória. Portanto, depois de excluir a variável usando a instrução del, podemos usar o método gc.collect() para limpar a variável da memória.

O código de exemplo a seguir demonstra como usar a instrução del com o método gc.collect() para limpar a memória em Python.

import numpy as np
import gc

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