Профиль использования процессора Python по потокам - PullRequest
7 голосов
/ 12 января 2010

У меня есть многопоточное приложение Python, и в настоящее время я устраняю проблемы с очень высокой (90% или более) загрузкой процессора.

Я собираюсь попробовать профилировщик, но я хотел посмотреть, есть ли способ, которым я могу получить загрузку ЦП для потока из приложения. Я понимаю, что os.times () получит общее использование процессора - могу ли я что-то запустить в каждом потоке, чтобы получить использование каждого потока? Было бы очень полезно определить, какой поток потребляет процессор.

Ответы [ 3 ]

2 голосов
/ 08 января 2014

Или вы можете просто использовать yappi. (https://code.google.com/p/yappi/) Он прозрачно использует GetThreadTimes (), если для профилирования выбран тип тактовой частоты ЦП. Он покажет вам время ЦП запущенного потока.

См. Здесь также пример: https://code.google.com/p/yappi/wiki/YThreadStats_v082

1 голос
/ 12 января 2010

Кроме профилировщика, я не думаю, что в Python есть много встроенных для мониторинга использования ЦП отдельных потоков. Кроме того, этот пост предоставляет пример простой реализации профилировщика потока. Похоже, он в основном ориентирован на Unix-системы, но это только начало.

0 голосов
/ 12 января 2010

Если вы работаете в Windows, вы можете взглянуть на Process Explorer ("procxp.exe", поставляемый с Microsoft Sysinternals Tools ). В свойствах каждого процесса есть вкладка «Потоки», в которой перечислены все потоки и их время процессора.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...