Как измерить время выполнения скрипта Python
Допустим, вы хотите знать время выполнения следующего кода Python:
a = range(100000) b = [] for i in a: b.append(i*2)
Есть несколько способов измерить время, необходимое для выполнения скрипта Python, но вот лучший способ сделать это, и я объясню почему:
import timeit code_to_test = """ a = range(100000) b = [] for i in a: b.append(i*2) """ elapsed_time = timeit.timeit(code_to_test, number=100)/100 print(elapsed_time)
В консоли получим: 0.01137321546
Это вывод, который я получаю на своем Macbook Pro. Итак, это более или менее 1/100 секунды.
Как работает вышеуказанный скрипт
Строка 1: мы импортируем модуль timeit . Строка 3: мы создаем переменную. В этой переменной мы храним код, который хотим протестировать. Этот код должен идти внутри тройных кавычек. Итак, тестовый код предоставляется в виде строки. Строка 10: мы вызываем функцию time.timeit() . Функция timeit() получает тестовый код в качестве аргумента, выполняет его и записывает время выполнения. Чтобы получить точное время, я приказал timeit() выполнить 100 циклов. Поэтому мне пришлось разделить вывод на 100, чтобы получить время выполнения только для одного цикла. Строка 11: мы просто распечатываем время выполнения. Результат — время выполнения в секундах.
Почему timeit() — лучший способ измерить время выполнения кода Python?
1. timeit() автоматически будет использовать time.clock() или time.time() для вас в фоновом режиме, в зависимости от того, какая операционная система вам нужна для получения наиболее точных результатов.
2. timeit() отключает сборщик мусора, который может исказить результаты.
3. timeit() повторяет тест много раз (в нашем случае 100 раз), чтобы минимизировать влияние других задач, выполняемых в вашей операционной системе.
Упражнение:
Кстати, код, который мы тестировали выше, строит список путем умножения элементов другого списка. Я могу достичь того же результата, используя range :
a = range(100000) b = [i*2 for i in a]
Если вам больше нечем заняться и попробуйте выполнить упражнение, попробуйте измерить время выполнения приведенного выше кода с помощью timeit() .
Наконец, совет: закрывайте тяжелые программы, которые запускаются на вашем компьютере, когда вы выполняете такие тесты, чтобы вы получили еще более точные результаты, которые не зависят от тяжелых задач процессора.
Источник:
Как оценить время выполнения кода в Python
Сегодня поговорим про оценку времени выполнения фрагмента кода в языке Python. В Python есть несколько способов измерения времени выполнения, которые помогут вам в этом процессе. В этой статье мы рассмотрим некоторые из них с примерами кода.
Оценка времени работы кода в Python: несколько практических примеров
Одним из важных аспектов при разработке программного обеспечения является оптимизация производительности. Оценка времени выполнения кода играет важную роль в определении эффективности алгоритмов и выявлении мест, где можно улучшить скорость работы программы. Одним из способов данной оценки является модуль time. Модуль time предоставляет функции для работы со временем в Python. Одна из таких функций — time.time() , которая возвращает количество секунд, прошедших с начала эпохи (обычно 1 января 1970 года). Можно использовать эту функцию для измерения времени выполнения определенного участка кода:
import time start_time = time.time() # Ваш код, время выполнения которого нужно измерить end_time = time.time() execution_time = end_time - start_time print(f"Время выполнения: секунд")
Модуль timeit предназначен специально для измерения времени выполнения небольших фрагментов кода. Он предоставляет функцию timeit() , которая автоматически повторяет выполнение кода несколько раз и возвращает среднее время выполнения:
import timeit code_to_test = """ # Код, время выполнения которого нужно измерить """ execution_time = timeit.timeit(code_to_test, number=1000) print(f"Среднее время выполнения: секунд")
Модуль line_profiler предоставляет декоратор @profile , который можно использовать для профилирования кода и измерения выполнения каждой строки. Чтобы использовать этот декоратор, необходимо установить line_profiler с помощью pip install line_profiler :
import line_profiler @profile def your_function(): # Ваш код, время выполнения которого нужно измерить pass your_function()
Важно также помнить, что измерение времени выполнения может быть влиянием на само выполнение программы, поэтому рекомендуется использовать эти методы только для профилирования и оптимизации кода, а не включать их в окончательную версию вашей программы. Использование вышерассмотренных методов позволяет более точно оценить производительность кода и выявить места, где можно сделать оптимизации для улучшения скорости выполнения программы.