У меня есть большая программа на 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, чтобы найти эту информацию, это нормально.