Python вопрос о потраченном времени - PullRequest
4 голосов
/ 30 июня 2010

Я хотел бы знать, сколько времени потратила определенная функция во время действия программы, которая включает в себя рекурсию, как лучше всего это сделать?

Спасибо

Ответы [ 2 ]

12 голосов
/ 30 июня 2010

Лучшим способом было бы запустить некоторые тесты производительности (для проверки отдельных функций) или Профилирование (для тестирования всего приложения / программы). Python поставляется со встроенными профилировщиками.

В качестве альтернативы, вы можете вернуться к самим основам , просто установив время начала в начале программы и, в конце программы, вычтя текущее время из времени начала. По сути, это очень простой сравнительный анализ.

Вот реализация из ответа из связанного вопроса:

import time
start = time.time()
do_long_code()
print "it took", time.time() - start, "seconds."

Python имеет что-то для тестирования , также включенное в его стандартную библиотеку.

Из примера приведите на странице:

def test():
    "Time me"
    L = []
    for i in range(100):
        L.append(i)

if __name__=='__main__':
    from timeit import Timer
    t = Timer("test()", "from __main__ import test")
    print t.timeit()
3 голосов
/ 30 июня 2010

Используйте профилировщик!

python -m cProfile -o prof yourscript.py
runsnake prof

runsnake - хороший инструмент для просмотра результатов профилирования. Конечно, вы можете использовать другие инструменты.

Подробнее о профилировщике здесь: http://docs.python.org/library/profile.html

...