У меня есть программа Python, которая проводит серию экспериментов, без данных, предназначенных для хранения из одного теста в другой. Мой код содержит утечку памяти, которую я полностью не могу найти (я смотрю другие темы на утечки памяти). Из-за ограничений по времени мне пришлось отказаться от обнаружения утечки, но если бы я смог изолировать каждый эксперимент, программа, вероятно, работала бы достаточно долго, чтобы получить нужные мне результаты.
- Будет ли запускать каждый тест в отдельном потоке?
- Существуют ли какие-либо другие способы выделения эффектов утечки?
Подробно о конкретной ситуации
- Мой код состоит из двух частей: экспериментального бегуна и фактического кода эксперимента.
- Хотя между кодами для запуска всех экспериментов и кодом, используемым каждым экспериментом, не используются общие глобальные подпрограммы, некоторые классы/функции обязательно разделяются.
- Экспериментальный бегун - это не просто простой цикл, который можно легко поместить в оболочку script. Сначала он решает о тестах, которые необходимо выполнить с учетом параметров конфигурации, затем запускает тесты, затем выводит данные определенным образом.
- Я пытался вручную вызвать сборщик мусора, если проблема была в том, что сбор мусора не запускался, но это не сработало.
Обновление
Ответ Gnibbler фактически позволил мне узнать, что мои объекты ClosenessCalculation, которые хранят все данные, используемые во время каждого вычисления, не уничтожаются. Затем я использовал это, чтобы вручную удалить некоторые ссылки, которые, похоже, исправили проблемы с памятью.