Stackless Python - время выполнения профиля одного тасклета - PullRequest
1 голос
/ 25 декабря 2011

На моем сервере, написанном на Stackless Python, я иногда получаю большие всплески загрузки процессора в течение 5-10 секунд.Это случается время от времени, поэтому у меня возникают проблемы с поиском.

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

Есть ли удобный способ подключиться к планировщику в Stackless Python, чтобы я мог добавить некоторый временной код?Другими словами, есть ли функция, которая вызывается, когда тасклет становится активным и когда он становится неактивным, к которому я могу подключиться?

1 Ответ

0 голосов
/ 28 декабря 2011

Я не нашел явной функции, в которую можно было бы зацепиться, когда тасклет блокирует / возобновляет работу, но так как Channel.receive () обычно имеет место, когда происходит блокировка / возобновление, я подключился к каждому случаю этого события.

...