Интенсивный процессорный сервер разработки Django - как анализировать? - PullRequest
6 голосов
/ 17 ноября 2009

Я заметил, что мой сервер разработки django (версия 1.1.1) на моей локальной машине с windows7 использует много ЦП (~ 30%, согласно записи python.exe диспетчера задач), даже в состоянии ожидания, т.е. нет запроса на вход / выход. Существует ли установленный способ анализа того, что может за это отвечать?

Спасибо!

Martin

Ответы [ 4 ]

13 голосов
/ 18 ноября 2009

FWIW, вы должны выполнить профилирование, но когда вы сделаете это, я готов поспорить, вы обнаружите, что ответ «опрос на наличие изменений в ваших файлах, чтобы он мог автоматически перезагрузиться». Вы можете выполнить быстрый тест с помощью «python manage.py runserver --noreload» и посмотреть, как это влияет на загрузку процессора.

3 голосов
/ 17 ноября 2009

Нажмите Control-C и завершите процесс. Вероятно, он потерпит крах где-то, что тратит много времени.

Или вы можете использовать профилировщик.

2 голосов
/ 18 ноября 2009

http://docs.python.org/library/profile.html

Это стандартный подход.

0 голосов
/ 18 ноября 2009

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

Если вы видите сообщение «Вход в CalculateFoo ()», а затем пять секунд спустя «Выход из CalculateFoo ()», это является главной подсказкой. Или если одна конкретная функция продолжает печатать снова и снова.

Вот краткое обсуждение регистрации в Python.

Советы по отладке Python

РЕДАКТИРОВАТЬ: Я только что заметил, что вы специально сказали, что это на вашем рабочем столе Windows 7. Итак, используйте профилировщик. Но я оставлю этот ответ, чтобы охватить общий случай.

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