Как узнать время выполнения работы функций и детализацию?

В Python есть несколько способов измерить время выполнения работы функций и получить детализацию этого времени.

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

import time

# Засекаем время до выполнения функции
start_time = time.time()

# Выполняем функцию
результат = ваша_функция()

# Засекаем время после выполнения функции
end_time = time.time()

# Вычисляем разницу
total_time = end_time - start_time

# Выводим результаты
print(f"Время выполнения функции: {total_time} секунд")

Второй способ - использование модуля timeit. Этот модуль предназначен специально для измерения времени выполнения кода. Вам нужно передать timeit строку кода или функцию, которую вы хотите измерить, и указать количество запусков (number), по умолчанию это будет 1.

import timeit

# Определяем фунцию, которую нужно измерить
def ваша_функция():
    ...

# Измеряем время выполнения фунции
total_time = timeit.timeit(ваша_функция, number=1)

# Выводим результаты
print(f"Время выполнения функции: {total_time} секунд")

Третий способ - использование модуля profile. Этот модуль предоставляет более подробную информацию о времени выполнения функций, включая время выполнения каждой строки кода внутри функции. Чтобы использовать profile, вы должны создать объект Profiler, запустить его перед выполнением функции, а затем вывести статистику о времени выполнения:

import cProfile

# Определяем функцию, которую нужно профилировать
def ваша_функция():
    ...

# Создаем объект Profiler
profiler = cProfile.Profile()

# Запускаем профайлер перед выполнением функции
profiler.enable()

# Выполняем функцию
результат = ваша_функция()

# Останавливаем профайлер
profiler.disable()

# Выводим статистику
profiler.print_stats()

Это основные способы измерения времени выполнения функций в Python. Каждый из этих способов имеет свои особенности, и выбор зависит от ваших конкретных задач и требований.