# Простой способ + Интересный способ

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

Представляем модуль времени

Модуль time встроен в Python, а это значит, что нам не нужно устанавливать ничего дополнительно. Мы можем просто импортировать его.

from time import time

Функция «время»

Это не модуль time. Это функция time. Что может немного сбить с толку новичков. Но только помните, что если вы используете from time import time, всё будет ок.

from time import time

my_time = time()
print(my_time)

# 1694443974.14924

Когда мы вызываем функцию time, она возвращает нам большое число. Это большое число представляет собой временную метку unix, то есть количество секунд, прошедших с 1 января 1970 года в 00:00:00 ETC.

Тайминг с функцией «время»

def dostuff():
    x = 0
    for i in range(100000):
        x += i
    return x

from time import time

start_time = time()
dostuff()
end_time = time()

print('time taken:', end_time-start_time, 'seconds')

# time taken: 0.004242897033691406 seconds
  • сначала мы находим временную метку start_time
  • мы запускаем нашу функцию dostuff
  • затем мы находим временную метку end_time
  • end_time-start_time – это количество секунд, в течение которых dostuff бежал

Сделать это повторяемым для нескольких функций

Но что, если у нас есть много функций, для которых мы хотим это сделать? Нужно ли нам писать это несколько раз?

Нет, мы можем написать простую функцию-декоратор, которая поможет нам!

from time import time

def timethis(my_function):
    def wrapper(*args, **kwargs):
        start_time = time()
        my_function(*args, **kwargs)
        end_time = time()
        print(f'time taken for {my_function.__name__}:', end_time-start_time, 'seconds')
    return wrapper

@timethis
def test1():
    for i in range(100000):
        x = 1

@timethis
def test2():
    for i in…