Утечка памяти Schrodinger - при hpy утечка инициализации исчезает
Я заметил, что в моем коде на 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