Как определить стоимость процессора и памяти для функции?
Может кто-то подскажет, что было бы лучшей практикой или подходящей библиотекой для определения:
- Число циклов процессора, используемых во время выполнения функции 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