Python:Рецепты/Простое профилирование программы: различия между версиями
Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
Myagkij (обсуждение | вклад) Нет описания правки |
Myagkij (обсуждение | вклад) |
||
Строка 12: | Строка 12: | ||
==Решение== | ==Решение== | ||
Вызовите функцию [[time.time()]] в начале блока кода, время выполнения которого вы хотите измерить, а затем в конце этого блока, затем вычтите значение первой временной метки из значения второй, в результате получите длительность промежутка времени, прошедшего между двумя вызовами. | |||
==Пример== | |||
Измерим сколько займет времени вычисление произведения первых 100 000 чисел. | |||
<syntaxhighlight lang="python" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS" enclose="div"> | <syntaxhighlight lang="python" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS" enclose="div"> | ||
import time | import time | ||
startTime = time.time() | startTime = time.time() | ||
# Вычисление | # Вычисление произведения первых 100 000 чисел | ||
product = 1 | product = 1 | ||
for i in range(1, 100000): | for i in range(1, 100000): |
Версия от 14:58, 12 января 2020
Проверка/Оформление/Редактирование: Мякишев Е.А.
Простое профилирование программы
Задача
Измерение периодов времени, в течение которых выполняются определенные фрагменты кода.
Это простой способ профилирования, если вам нужна более информативная детализация, обратитесь к функции cProfile.run() |
Решение
Вызовите функцию time.time() в начале блока кода, время выполнения которого вы хотите измерить, а затем в конце этого блока, затем вычтите значение первой временной метки из значения второй, в результате получите длительность промежутка времени, прошедшего между двумя вызовами.
Пример
Измерим сколько займет времени вычисление произведения первых 100 000 чисел.
import time
startTime = time.time()
# Вычисление произведения первых 100 000 чисел
product = 1
for i in range(1, 100000):
product = product * i
endTime = time.time()
print('Длина результата: %s цифр.' % (len(str(product))))
print('Расчет занял %s секунд' % (endTime - startTime))