threading.py._release_save & socket.py.accept время процессора - PullRequest
1 голос
/ 04 апреля 2011

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

Я начал использовать программное обеспечение для профилирования (yappi), и, хотя кажется, что все потоки не тратят много времени, есть 2 исключения:

name                                 #n       tsub       ttot       tavg
Thread         1402.. ../lib/python2.6/socket.py.accept:19 340      678.6799.. 
..bmit_listene 1402.. ..n2.6/threading.py._release_save:21 5032     932.8961..

Известно ли, что эти методы / классы "ресурсоемки"? У вас есть советы по улучшению производительности?

Спасибо

Jay

1 Ответ

0 голосов
/ 27 июля 2011

Сроки блокировки вызовов в профилировщиках не очень значимы. Когда выполняется блокирующий вызов, этот поток приостанавливается и другие потоки запускаются, когда блокирующий вызов возвращает назад, время, потраченное в других потоках, также добавляется к общему времени вызываемой функции. Смотрите это: Многопоточная статистика для Yappi

Обновление: v0.62 поддерживает профилирование времени процессора, которое эффективно решает все проблемы, связанные с многопоточным профилированием функций блокировки.

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