Limpar memória em Python
-
Limpar memória em Python usando o método
gc.collect() -
Limpar memória em Python usando a instrução
del
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()