У меня есть приложение, которое запускает около 400 потоков одновременно.Все отлично работаетИ пользователь может остановить потоки, нажав какую-то кнопку.
Чтобы остановить поток, я реализовал глобальную переменную, которая устанавливается как True
при нажатии кнопки.Потоки регулярно проверяют эту переменную.Если ON, return
.
return
отлично работает для меня как способ остановить поток: я не вижу больше вывода пользователю из потоков.Однако, когда я проверяю память диспетчера задач, я нахожу следующее:
Перед запуском потоков Python занимает около 64 МБ ОЗУ
После запуска потоков Python занимает около 700 МБ ОЗУ
После остановки потоков, как описано выше, Python занимает около 600 МБ ОЗУ, но никогда не возвращается к 64 МБ ОЗУ
Я думаю, что это проблема сбора мусора.Возможно, использование return
- плохая идея.Как я могу решить эту проблему?
Обновление:
Приложение представляет собой приложение Tkinter, и потоки выполняются на отдельном уровне верхнего уровня.