Python:Примеры/Секундомер с измерением общего времени и времени круга: различия между версиями

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
(Новая страница: «{{Python/Панель перехода}} {{Myagkij-редактор}} =Простое профилирование программы= ==Задача== Изм…»)
 
Нет описания правки
 
(не показаны 4 промежуточные версии 1 участника)
Строка 3: Строка 3:
{{Myagkij-редактор}}
{{Myagkij-редактор}}


=Простое профилирование программы=
=Секундомер с измерением общего времени и времени круга=


==Задача==


Измерение периодов времени, в течение которых выполняются определенные фрагменты кода.
=Код=


{{Спойлер|Это простой способ профилирования, если вам нужна более информативная детализация, обратитесь к функции [[cProfile.run()]]}}
<syntaxhighlight lang="python" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS">
 
import time
==Решение==
 
Вызовите функцию [[time.time()]] в начале блока кода, время выполнения которого вы хотите измерить, а затем в конце этого блока, затем вычтите значение первой временной метки из значения второй, в результате получите длительность промежутка времени, прошедшего между двумя вызовами.


==Пример==
# Отображаем инструкцию для пользователя
print('Нажмите клавишу Enter, чтобы начать. После этого нажмите клавишу Enter, чтобы "нажать" на секундомер. Нажмите комбинацию клавиш Ctrl-C для останова секундомера и выхода из программы.')
input()
print('Начали.')
startTime = time.time() # стартовое время первого круга
lastTime = startTime
lapNum = 1


Измерим сколько займет времени вычисление произведения первых 100 000 чисел.
# Начало отслеживание круга
 
try:
===Код===
    while True:
 
        input()
<syntaxhighlight lang="python" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS" enclose="div" highlight="2,7">
        lapTime = round(time.time() - lastTime, 2)
import time
        totalTime = round(time.time() - startTime, 2)
startTime = time.time()
        print('Круг #%s: %s (%s)' % (lapNum, totalTime, lapTime), end='')
# Вычисление произведения первых 100 000 чисел
        lapNum += 1
product = 1
        lastTime = time.time() # сброс времени последнего круга
for i in range(1, 100000):
except KeyboardInterrupt:
    product = product * i
    # Обработать исключение Ctrl-C, чтобы не отображалось сообщение об ошибке
endTime = time.time()
    print('\nГотово.')
print('Длина результата: %s цифр.' % (len(str(product))))
print('Расчет занял %s секунд' % (endTime - startTime))
</syntaxhighlight>
</syntaxhighlight>


Строка 40: Строка 40:


<references />
<references />
 
{{Навигационная таблица/Python}}
{{Навигационная таблица/Телепорт}}
{{SEO
{{SEO
|Заголовок статьи=Python:Рецепты - Простое профилирование программы / Онлайн справочник - wikihandbk.com
|Заголовок статьи=Python:Примеры - Секундомер с измерением общего времени и времени круга / Онлайн справочник - wikihandbk.com
|Ключевые слова=python, рецепты python, профилирование в python, python профилирование, профилирование time.time(), time.time(), time()
|Ключевые слова=python, примеры python, примеры на python
|Описание статьи=
|Описание статьи=
|Изображение статьи для Open Graph=
|Изображение статьи для Open Graph=
|Адрес страницы для schemaNewsArticle=<nowiki>http://wikihandbk.com/wiki/Python:Рецепты</nowiki>
|Адрес страницы для schemaNewsArticle=<nowiki>http://wikihandbk.com/wiki/Python:Примеры/Секундомер с измерением общего времени и времени круга</nowiki>
|Изображение статьи для schemaNewsArticle=<nowiki></nowiki>
|Изображение статьи для schemaNewsArticle=<nowiki></nowiki>
|Высота изображения статьи для schemaNewsArticle=
|Высота изображения статьи для schemaNewsArticle=

Текущая версия от 18:23, 14 мая 2023

Проверка/Оформление/Редактирование: Мякишев Е.А.


Секундомер с измерением общего времени и времени круга

Код

import time

# Отображаем инструкцию для пользователя
print('Нажмите клавишу Enter, чтобы начать. После этого нажмите клавишу Enter, чтобы "нажать" на секундомер. Нажмите комбинацию клавиш Ctrl-C для останова секундомера и выхода из программы.')
input()
print('Начали.')
startTime = time.time() # стартовое время первого круга
lastTime = startTime
lapNum = 1

# Начало отслеживание круга
try:
    while True:
        input()
        lapTime = round(time.time() - lastTime, 2)
        totalTime = round(time.time() - startTime, 2)
        print('Круг #%s: %s (%s)' % (lapNum, totalTime, lapTime), end='')
        lapNum += 1
        lastTime = time.time() # сброс времени последнего круга
except KeyboardInterrupt:
    # Обработать исключение Ctrl-C, чтобы не отображалось сообщение об ошибке
    print('\nГотово.')

См.также

Внешние ссылки