У меня есть программа Python, которая запускает серию экспериментов без данных, предназначенных для хранения из одного теста в другой. Мой код содержит утечку памяти, которую я полностью не могу найти (я смотрю на other threads на утечки памяти). Из-за ограничений по времени мне пришлось отказаться от обнаружения утечки, но если бы я смог изолировать каждый эксперимент, программа, вероятно, работала бы достаточно долго, чтобы получить нужные мне результаты.Python - Работа с утечками памяти
- Будет ли выполняться каждый тест в отдельном потоке справки?
- Существуют ли какие-либо другие способы изоляции последствий утечки?
Подробная информация о конкретной ситуации
- Мой код состоит из двух частей: эксперимент полоз и фактический код эксперимента.
- Несмотря на то, что между кодом для запуска всех экспериментов и кодом, используемым каждым экспериментом, не используются общие глобальные подпрограммы, некоторые классы/функции обязательно разделяются.
- Экспериментальный бегун - это не просто простой цикл, который можно легко поместить в сценарий оболочки. Сначала он решает о тестах, которые необходимо выполнить с учетом параметров конфигурации, а затем запускает тесты, а затем выводит данные определенным образом.
- Я попытался вручную вызова сборщика мусора в случае вопрос был просто, что сбор мусора не запустить, но это не сработало
Update
ответ Gnibbler в фактически позволил мне узнайте, что мои объекты ClosenessCalculation, которые хранят , все данных, используемых во время каждого расчета, не уничтожаются. Затем я использовал это, чтобы вручную удалить некоторые ссылки, которые, похоже, исправили проблемы с памятью.
Определите «утечку памяти» в python. – hasen
Я имею в виду, вы не можете «забыть», чтобы освободить память; это GCed. – hasen
Как вы можете сказать, что у вас есть утечка памяти? Разве ваша память процессов растет до больших размеров и никогда не сжимается? Если это так, имейте в виду, что Python не обязательно возвращает память в ОС только потому, что она больше не использует ее. –