Как определить стоимость процессора и памяти для функции? - PullRequest
12 голосов
/ 21 января 2012

Может ли кто-нибудь подсказать, что было бы лучшим методом или подходящей библиотекой для определения:

  1. Количество циклов ЦП , используемых во время выполнения функции Python?
  2. Количество Память , используемая той же самой функцией Python?

Я смотрел на гуппи и meliae , но все еще могуполучить детализацию до уровня функции?Я что-то упустил?

ОБНОВЛЕНИЕ Необходимо задать этот вопрос, чтобы решить конкретную ситуацию, которая заключается в том, что у нас есть набор распределенных задач, работающих в облачных экземплярах, итеперь нам нужно реорганизовать размещение задач на правильных типах экземпляров с помощью кластера, например, функциональные задачи с большим объемом памяти будут размещены на больших экземплярах памяти и так далее.Когда я имею в виду задачи (celery-tasks), это не что иное, как простые функции, для которых нам нужно теперь профилировать использование их выполнения.

Спасибо.

1 Ответ

8 голосов
/ 22 января 2012

Вы можете посмотреть на CPU profiler для Python:
http://docs.python.org/library/profile.html
Пример вывода cProfile.run(command[, filename])

  2706 function calls (2004 primitive calls) in 4.504 CPU seconds

Ordered by: standard name

ncalls  tottime  percall  cumtime  percall filename:lineno(function)
     2    0.006    0.003    0.953    0.477 pobject.py:75(save_objects)
  43/3    0.533    0.012    0.749    0.250 pobject.py:99(evaluate)
...

Кроме того, memory требуетсяпрофилировщик тоже:
профилировщики с открытым исходным кодом: PySizer и Heapy

...