Я заметил, что в моем коде на python есть утечка памяти, и он находился в процессе отладки.Я импортировал hpy из гуппи и инициализировал его (h = hpy ()), утечка исчезла.Как только эта инициализация закомментирована, утечка возвращается.Есть ли что-то, что происходит во время инициализации hpy, что может привести к этому?Насколько я понимаю, это должен быть только монитор кучи, поэтому, если он не вызывает сборщик мусора или что-то в этом роде, он не должен "исправлять" мою проблему.
Я сосредоточился в основном на изоляции утечки памяти в моем коде, который я чувствую, исходит из внешней библиотеки, которую я импортирую.В основном это скомпилированное программное обеспечение под названием LAMMP с настройкой общих библиотек Python.Я попытался удалить объекты, вручную вызвать сборщик мусора python и т. Д. Я обнаружил, что гуппи можно использовать, чтобы помочь изолировать утечку памяти, и поэтому собирался использовать его;однако заметил, что, как только я импортирую и инициализирую гуппи, утечка исчезла (что фактически затрудняет отладку ...).
memory_monitor_code.py
import os
import time
for i in range(10000):
os.system("free -m | head -n 2 | tail -n 1 | awk '{print $3}' >> mem.log")
time.sleep(2)
leaky_code.py
from guppy import hpy
# CODE AND STUFFS
def objective():
# With the addition of this, memory leak is effectively removed.
h = hpy()
# CODE AND STUFFS