Я хочу написать функцию, которая ведет себя точно так же, как данная функция, за исключением того, что она печатает время, затраченное на ее выполнение. Именно так:
>>> fib = profile(fib) >>> fib(20) time taken: 0.1 sec 10946
Это мой код, и он будет печатать сообщение в каждом вызове функции.
Мой код выше будет печатать сообщение “взятое время:…” для каждого фиб (n-1). Таким образом, будет много времени для приема сообщений:… “. Могу ли я найти способ просто распечатать время выполнения fib (20), а не каждое время выполнения fib (n-1)?
Лучший ответ:
Я предполагаю, что ваш вопрос: “Как написать profile чтобы он печатал только одно сообщение, даже когда я украшаю функцию, которая может называть себя?”
Вы можете отслеживать, какие функции в настоящее время синхронизируются. Таким образом, если функция вызывает себя, вы знаете, что вы уже синхронизировали ее по стеку и не нужно ничего делать для второго экземпляра.
def profile(f, currently_evaluating=set()): #’currently_evaluating’ will persist across all decorated functions, due to «mutable default argument» behavior. #see also http://stackoverflow.com/questions/1132941/least-astonishment-in-python-the-mutable-default-argument def g(x): #don’t bother timing it if we’re already doing so if f in currently_evaluating: return f(x) else: start_time = time.clock() currently_evaluating.add(f) try: value = f(x) finally: currently_evaluating.remove(f) end_time = time.clock() print(‘time taken: ‘.format(time=end_time-start_time)) return value return g
Если вы используете 3.X, вы можете отключить изменчивую аргументацию по умолчанию, используя ключевое слово nonlocal .
Ты неправильно замеряешь время в Python! Или нет?
def profile(f): is_evaluating = False def g(x): nonlocal is_evaluating if is_evaluating: return f(x) else: start_time = time.clock() is_evaluating = True try: value = f(x) finally: is_evaluating = False end_time = time.clock() print(‘time taken: ‘.format(time=end_time-start_time)) return value return g
Вы можете использовать класс в качестве своего профилировщика:
Это время печати (только один раз) и результат:
time taken: 9.056212818586247e-07 10946
Я понял ответ, которого вы ожидали. у вас есть крошечные ошибки в вашем коде, просто перейдите к приведенному ниже коду,
import time def profile(f): start_time=time.time() def g(x): value = f(x) return value print(«time taken : %f seconds»%(time.time()-start_time)) return g def fib(n): if n is 0 or n is 1: return 1 else: return fib(n-1) + fib(n-2) x = profile(fib) print(x(20))
Источник: techarks.ru
Как узнать время выполнения программы? #python #программирование
Как узнать время выполнения программы? #python #программирование
Как узнать время выполнения программы? #python #программирование.
Опубликовать в социальную сеть
Поделиться видео
Russian
- Albanian
- Amharic
- Arabic
- Brazilian
- Bulgarian
- Croatian
- Danish
- Deutsch
- English
- Farsi
- Français
- Georgian
- Greek
- Hebrew
- Italian
- Lithuanian
- Nederlands
- Polish
- Portuguese
- Română
- Serbian
- Slovak
- Spanish
- Swedish
- Türkçe
- Thai
Источник: best-coding.ru
Расчёт времени выполнения программы на python
Расчёт времени выполнения программы на python #short.
Как узнать время выполнения программы? #python #программирование
Простой способ замерить скорость работы кода в python
Часто нам надо понять, как быстро работает какой-то кусочек кода, какую чего часть оптимизировать и как изменилась .
Управление временем на python | Модуль time python (питон)
Управление временем на python | Модуль time python (питон) ☆ Телеграм канал: https://t.me/programmersGuide_1 ☆ Группа .
Ты неправильно замеряешь время в Python! Или нет?
Запущен первый курс мощной образовательной программы от Диджитализируй: «Основы компьютерных и веб-технологий .
Как измерить время выполнения кода в python #shorts #short
Как измерить время выполнения кода в python с помощью библиотеки timeit.
Время выполнения задачи на Python
В это м видеоролике я показываю, как рассчитать время, необходимое для выполнения программы в Python. В этом .
Измерение времени исполнения программы в Python
Измерение времени выполнения всей программы или конкретной функциональности в python обычно помогает нам .
Как замерять время выполнения кода в Python | timeit vs time
Как замерять скорость выполнения кода при помощи timeit В этом видео я расскажу, почему неправильно замерять время .
Источник: fyotar.com