Как определить стоимость процессора и памяти для функции?

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

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

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

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

Спасибо.

Ответ 1

Вы можете посмотреть в 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