Lidando com memória em uma aplicação Python que rodará por um longo tempo

O Python tem um garbage collector, mas não é tão bom quanto o Java, então em algumas aplicações para rodar initerruptamente é importante monitorar o estado da memória do programa e apagar da memória variáveis e objetos não utilizados.

Visualizando a memória utilizada pelo seu programa no Python

Usando o resource

Se o Python rodar em Linux, basta usar a biblioteca resource:

import resource
<span class="pln">resource</span><span class="pun">.</span><span class="pln">getrusage</span><span class="pun">(</span><span class="pln">resource</span><span class="pun">.</span><span class="pln">RUSAGE_SELF</span><span class="pun">).</span><span class="pln">ru_maxrss</span>

Usando o memory_profiler

Mostra o uso da memória em tempo real no console
https://www.dev2qa.com/python-profile-memory-usage-and-object-graph-example/

Usando o objgraph

Cria um grafo das relações entre os objetos no programa.
https://www.dev2qa.com/python-profile-memory-usage-and-object-graph-example/

Outras dicas para otimizar memória

https://dzone.com/articles/python-memory-issues-tips-and-tricks

Forçando Python a limpar a memória

Chamando o garbage collector

gc.collect

Marcando variáveis e objetos para serem deletados pelo garbage collector

chamar o del:

Dando override no método __del__

implementando seu próprio __del__

Resposta interessante sobre como limpar a memória

https://stackoverflow.com/a/38545526/2789895

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *