При запуске программы на python количество потоков, о которых сообщает монитор ресурсов Windows, велико и продолжает увеличиваться

#python #windows #multithreading #python-multithreading #resource-monitor

#python #Windows #многопоточность #python -многопоточность #resource-monitor

Вопрос:

Я написал многопоточную программу на python, которая запускает в общей сложности 4 потока, включая основной. Потоки запускаются в начале, и нет никакого цикла или чего-либо, связанного с их созданием.

Когда я запускаю threading.enumerate() или какой-либо эквивалент, python сообщает о 5 потоках, включая мои 4 плюс демон, и это не меняется со временем (устойчивое состояние).

однако монитор ресурсов widows показывает более 400 потоков, приписываемых python.exe процесс, и он постоянно растет (увеличивается на 4, уменьшается на 2 и так далее).

Я думаю, мне может быть трудно помочь без кода, и код будет слишком длинным для анализа сообществом, но есть ли какие-то конкретные общие вещи в python, которые, как правило, вызывают это? Возможно ли, что мониторы ресурсов видят некоторые мертвые потоки, которые запускаются и завершаются, но не собираются?

Кроме того, в целом, что может сделать количество потоков, выводимых len(threading.enumerate()) и монитор ресурсов Windows настолько разными? Почему python не видит эти потоки 350 , которые считает Windows?

Обратите внимание, что моя программа постоянно открывает и завершает подпроцессы (используя Popen и вызывая terminate() после его завершения), если это может к чему-то привести…

Комментарии:

1. Запустите Sysinternals Process Explorer. Дважды щелкните на python.exe обработайте и проверьте вкладку «Потоки».

2. Эта проблема была решена путем запуска Process Explorer. Программное обеспечение БЕЗОПАСНОСТИ моей компании запускало несколько потоков, и это было причиной этого. Я решил проблему, переименовав их. dll-файл с каким-то забавным именем. PS не говорите моему боссу.