Сборка мусора после остановки потоков - PullRequest
0 голосов
/ 05 марта 2019

У меня есть приложение, которое запускает около 400 потоков одновременно.Все отлично работаетИ пользователь может остановить потоки, нажав какую-то кнопку.

Чтобы остановить поток, я реализовал глобальную переменную, которая устанавливается как True при нажатии кнопки.Потоки регулярно проверяют эту переменную.Если ON, return.

return отлично работает для меня как способ остановить поток: я не вижу больше вывода пользователю из потоков.Однако, когда я проверяю память диспетчера задач, я нахожу следующее:

  • Перед запуском потоков Python занимает около 64 МБ ОЗУ

  • После запуска потоков Python занимает около 700 МБ ОЗУ

  • После остановки потоков, как описано выше, Python занимает около 600 МБ ОЗУ, но никогда не возвращается к 64 МБ ОЗУ

Я думаю, что это проблема сбора мусора.Возможно, использование return - плохая идея.Как я могу решить эту проблему?

Обновление:

Приложение представляет собой приложение Tkinter, и потоки выполняются на отдельном уровне верхнего уровня.

...