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