Утечка памяти 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

0 ответов

Другие вопросы по тегам