Python timeit - инструмент для измерения времени выполнения кода
Конечно, я могу написать развернутый ответ на вопрос о модуле timeit в Python.
Модуль timeit предоставляет механизм для измерения времени выполнения маленьких фрагментов кода с целью определения их эффективности и оптимизации производительности. Он особенно полезен при сравнении двух или нескольких реализаций одного и того же алгоритма для выбора наиболее эффективного варианта.
Пример использования модуля timeit:
<pre><code class="python">import timeit
# Пример функции, которую мы хотим измерить
def factorial(n):
if n == 0:
return 1
else:
return n * factorial(n-1)
# Измерение времени выполнения функции
execution_time = timeit.timeit("factorial(5)", setup="from __main__ import factorial", number=1000)
print("Время выполнения: ", execution_time)
</code></pre>
В данном примере мы импортируем модуль timeit и определяем функцию factorial, которую мы хотим измерить. Затем мы используем функцию timeit.timeit, передавая ей строку кода, которую мы хотим измерить, и определяем параметры setup и number.
Параметр setup используется для определения пространства имен, в котором будет выполняться код. В нашем случае мы передаем "from __main__ import factorial", чтобы импортировать функцию factorial из глобального пространства имен.
Параметр number определяет количество повторений выполнения кода для усреднения времени выполнения.
В конце мы выводим время выполнения в консоль.
Модуль timeit также предоставляет другие полезные функции, такие как repeat(), которая позволяет повторить измерения несколько раз и вернуть список результатов, а также функцию default_timer(), которая возвращает текущее значение времени в секундах в зависимости от платформы.
Вот еще один пример, который демонстрирует использование метода repeat():
<pre><code class="python">import timeit
def merge_sort(arr):
if len(arr) <= 1:
return arr
mid = len(arr) // 2
left_half = arr[:mid]
right_half = arr[mid:]
left_half = merge_sort(left_half)
right_half = merge_sort(right_half)
return merge(left_half, right_half)
def merge(left, right):
result = []
i = j = 0
while i < len(left) and j < len(right):
if left[i] < right[j]:
result.append(left[i])
i += 1
else:
result.append(right[j])
j += 1
result.extend(left[i:])
result.extend(right[j:])
return result
arr = [35, 12, 78, 56, 42, 25, 83, 61]
number_of_runs = 1000
execution_times = timeit.repeat("merge_sort(arr)", setup="from __main__ import merge_sort, arr", repeat=5, number=number_of_runs)
avg_execution_time = sum(execution_times) / len(execution_times)
print("Среднее время выполнения:", avg_execution_time)
</code></pre>
Здесь мы определяем функцию merge_sort, которая сортирует список arr с помощью алгоритма слияния. Затем мы используем метод repeat(), чтобы выполнить измерения сортировки несколько раз и вывести среднее время выполнения.
Это лишь некоторые примеры использования модуля timeit в Python. Он предоставляет удобный и надежный способ измерения времени выполнения кода, что очень полезно для оптимизации и сравнения различных реализаций алгоритмов.