Вопрос

Я запустил cprofile на небольшом фрагменте кода, который, среди прочего, порождает несколько потоков, выполняющих большую часть работы.Когда я посмотрел на результаты профилирования, я не увидел протоколирования всех функций, которые были вызваны внутри потоков.Я уверен, что их вызывали, поскольку они делают вещи, которые легко увидеть, например запись в БД и т. д.

cProfile не профилирует потоки?Я что-то пропустил?

Это было полезно?

Решение

Нашел ответ здесь: связь

Стоит отметить, что использование профилировщика работает (по умолчанию) только в основном потоке, и вы не получите никакой информации из других потоков, если будете их использовать.Это может быть некоторой ошибкой, поскольку в документации профилировщика это совершенно не упоминается.Если вы также хотите профилировать потоки, вам нужно посмотреть функцию threading.setprofile() в документации.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top