вызывает ли профиль cProfile внутри потоков?
-
22-09-2019 - |
Вопрос
Я запустил cprofile на небольшом фрагменте кода, который, среди прочего, порождает несколько потоков, выполняющих большую часть работы.Когда я посмотрел на результаты профилирования, я не увидел протоколирования всех функций, которые были вызваны внутри потоков.Я уверен, что их вызывали, поскольку они делают вещи, которые легко увидеть, например запись в БД и т. д.
cProfile не профилирует потоки?Я что-то пропустил?
Решение
Нашел ответ здесь: связь
Стоит отметить, что использование профилировщика работает (по умолчанию) только в основном потоке, и вы не получите никакой информации из других потоков, если будете их использовать.Это может быть некоторой ошибкой, поскольку в документации профилировщика это совершенно не упоминается.Если вы также хотите профилировать потоки, вам нужно посмотреть функцию threading.setprofile() в документации.