Как я могу узнать, сколько потоков Python имеет процесс извне? - PullRequest
0 голосов
/ 09 июля 2019

У меня есть большая программа на Python, которая имеет проблемы с производительностью. Причина проблемы пока не установлена.

В соответствии с csysdig в приложении часто работают 32 потока.

CPython, в котором написано приложение, плохо работает с потоками, связанными с процессором. Поэтому мне интересно, если проблема в производительности связана с тем, что потоки Python используются для чего-то привязанного к процессору.

У меня вопрос, в csysdig или sysdig или аналогичном инструменте (или инструментах кода), есть ли способ отличить потоки Python от потоков, которые происходят из модуля расширения C / C ++?

Я гуглил, но ничего не нашел вообще - только уроки о том, как использовать потоки.

Я также искал в коде Python строку «нить» и обнаружил лишь несколько случаев, которые, по-видимому, не объясняют проблему.

Я идентифицирую потоки, работающие в приложении CPython, используя:

csysdig -p"procname:%proc.name threadcount:%proc.nthreads" proc.name contains python

Вот откуда я знаю, что работает множество потоков.

Я хочу выяснить, сколько потоков является потоками CPython и сколько из модулей расширения C / C ++, без изучения всей большой кодовой базы.

Если мне нужно добавить код в приложение Python, чтобы найти эту информацию, это нормально.

...