Поведение профилировщика _lsprof.c по отношению к многопоточности Python - PullRequest
1 голос
/ 14 января 2009

Это вопрос о Python нативном файле c _lsprof. Как _lsprof.profile () профилировщик считает общее время, потраченное на функцию f в многопоточной программе, если выполнение f прерывается другим потоком?

Например:

def f ():
linef1
linef2
linef3

def g ():
lineg1
lineg2

И при выполнении мы имеем f и g не в одном потоке:

linef1
linef2
lineg1
linef3
lineg2

Тогда общее время выполнения f будет восприниматься как количество времени, необходимое для:

linef1
linef2
linef3

или это будет эффективное время ожидания:

linef1
linef2
lineg1
linef3

в результатах _lsprof.profile ()?

Ответы [ 2 ]

1 голос
/ 24 февраля 2009

Цитирование из документации для setprofile :

Функция зависит от потока, но у профилировщика нет возможности знать о переключениях контекста между темы, так что нет смысла использовать это при наличии нескольких резьб.

0 голосов
/ 19 марта 2009

Спасибо за этот ответ! На самом деле я использую один профилировщик в каждом контексте, поэтому вопрос имеет смысл. Из тестов, которые я сделал, профилировщик измерял бы «linef1 linef2 linef3» в приведенном выше примере.

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