Как найти время работы программы python

Профилирование кода — это набор статистических данных, который описывает, как часто и как долго выполняются различные части программы. Профилирование может найти долго выполняющиеся части вашего кода. Найдя их, вы можете оптимизировать эти части.

Стандартная библиотека Python предоставляет две разные реализации одного и того же интерфейса профилирования:

  • cProfile рекомендуется для большинства пользователей; это расширение Си с разумными издержками, которое делает его пригодным для профилирования долго работающих программ.
  • profile , чистый модуль Python, интерфейс которого имитируется cProfile, но который добавляет значительные накладные расходы к профилированным программам. Если вы пытаетесь каким-то образом расширить профилировщик, задача может быть проще с этим модулем.

Модули профилировщика предназначены для обеспечения профиля выполнения для данной программы, а не для целей тестирования. Это особенно относится к сравнительному анализу кода Python с кодом Cи: профилировщики вводят накладные расходы для кода Python, но не для функций уровня Cи, и поэтому код Cи будет казаться быстрее, чем любой код Python.

Простой способ замерить скорость работы кода в python

# Профилирование кода

(Используйте profile вместо cProfile , если последний не доступен в вашей системе.)

Для профилирование кода с cProfile достаточно импортировать модуль и вызвать его функцию run . Давайте посмотрим на простой пример:

import cProfile def print_hi(): print(‘Hi, cPrifile!’) cProfile.run(‘print_hi()’)
1
2
3
4
5
6

cProfile.run(‘print_hi()’) — запустит print_hi() и напечатает результаты профиля, как показано ниже:

Hi, cPrifile! 5 function calls in 0.000 seconds Ordered by: standard name ncalls tottime percall cumtime percall filename:lineno(function) 1 0.000 0.000 0.000 0.000 :1() 1 0.000 0.000 0.000 0.000 python_cprofile.py:4(print_hi) 1 0.000 0.000 0.000 0.000 1 0.000 0.000 0.000 0.000 1 0.000 0.000 0.000 0.000
1
2
3
4
5
6
7
8
9
10
11

Первая строка выводит результат выполнения профилированного кода: Hi, cPrifile! Вторая строка указывает, что было отслежено 5 вызовов. Следующая строка говорит нам, в каком порядке результаты выдачи. Заголовки столбцов включают в себя:

  • ncalls — на количество вызовов.
  • tottime — общее время, потраченное на данную функцию (и исключая время, затраченное на вызовы подфункций).
  • percall — ссылается на коэффициент tottime , деленный на ncalls ;
  • cumtime — совокупное время, проведенное в этой и всех подфункциях (от вызова до выхода). Эта цифра точна даже для рекурсивных функций.
  • Второй столбец percall — это отношение cumtime , деленное на примитивные вызовы (вызов, который не был совершен при помощи рекурсии).
Читайте также:
Year программа обмена отзывы

Создадим код с искусственными задержками, и посмотрим, обнаружит ли их cPrifile :

import cProfile import time def run_fast(): print(«The fast function has finished.») def run_medium(): time.sleep(0.5) print(«The medium function has finished.») def run_slow(): time.sleep(2) print(«The slow function has finished.») def main(): run_fast() run_slow() run_medium() cProfile.run(‘main()’)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

Результатом работы cProfile в этой программе:

The fast function has finished. The slow function has finished. The medium function has finished. 12 function calls in 2.503 seconds Ordered by: standard name ncalls tottime percall cumtime percall filename:lineno(function) 1 0.000 0.000 2.503 2.503 :1() 1 0.000 0.000 0.000 0.000 python_cprofile.py:13(run_fast) 1 0.001 0.001 0.501 0.501 python_cprofile.py:16(run_medium) 1 0.000 0.000 2.001 2.001 python_cprofile.py:20(run_slow) 1 0.000 0.000 2.503 2.503 python_cprofile.py:24(main) 1 0.000 0.000 2.503 2.503 3 0.000 0.000 0.000 0.000 2 2.502 1.251 2.502 1.251 1 0.000 0.000 0.000 0.000
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

Видим, что у программы ушло 2.5 секунды на запуск. Если вы изучите результаты, то увидите, что cProfile выявил медленную функцию, которая тратит 2 секунды на запуск. Это и есть самая «слабая» часть основной функции. Обычно, когда вы обнаруживаете такие места, вы можете попытаться найти самый быстрый способ выполнения вашего кода, или прийти к выводу, что такая задержка приемлема. В этом примере, мы знаем, что лучший способ ускорить функцию, то убрать вызов time.sleep() , или, по крайней мере, снизить продолжительность сна.

# Выясняем скорость загрузки сайтов

Давайте немного развлечемся и узнаем какой сайт быстрее всех откроется из нашей программы:

import requests import cProfile def get_google(): requests.get(‘https://google.com’) def get_yandex(): requests.get(‘https://yandex.ru’) def main(): get_google() get_yandex() cProfile.run(‘main()’)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
17383 function calls (17281 primitive calls) in 0.787 seconds Ordered by: standard name ncalls tottime percall cumtime percall filename:lineno(function) . 1 0.000 0.000 0.352 0.352 python_cprofile.py:37(get_google) 1 0.000 0.000 0.435 0.435 python_cprofile.py:40(get_yandex) .
1
2
3
4
5
6
7
8
9

Читайте также:
Для каждой вычислительной задачи составить программу содержащую операторы ввода вывода присваивания

Получили большой список результатов. Поиск по нему можно осуществить используя сочетание клавиш Ctrl+F . давайте найдем только наши функции. Запуск всех сайтов выполнился в 0.787 секунды. Быстрее открылся Google. Это не идеальный тест скорости, но наша задача была выполнена. Мы выясняли скорость открытия сайтов используя cProfile .

Вместо вывода в конце прогона профиля вы можете сохранить результаты в файл, указав имя файла для функции run():

import cProfile импорт re cProfile.run (‘re.compile («foo | bar»)’, ‘restats’)

Класс pstats.Stats считывает результаты профиля из файла и форматирует их различными способами.

Файлы cProfile и профиль также могут быть вызваны как сценарий для профилирования другого сценария. Например:

python -m cProfile [-o output_file] [-s sort_order] (-m module | myscript.py)

-o записывает результаты профиля в файл, а не в стандартный вывод

-s указывает одно из значений сортировки sort_stats() для сортировки выходных данных. Это применимо только тогда, когда -o не указан.

-m указывает, что модуль профилируется вместо сценария.

Источник: learn4kid-python.firebaseapp.com

#python Как узнать сколько времени займет запуск вашей программы (питон)⏳.

Язык Си. #024. Запуск программы и код ответа.

#python Как узнать сколько времени займет запуск вашей программы (питон)⏳.

Опубликовать в социальную сеть
Поделиться видео

Russian

  • Albanian
  • Amharic
  • Arabic
  • Brazilian
  • Bulgarian
  • Croatian
  • Danish
  • Deutsch
  • English
  • Farsi
  • Français
  • Georgian
  • Greek
  • Hebrew
  • Italian
  • Lithuanian
  • Nederlands
  • Polish
  • Portuguese
  • Română
  • Serbian
  • Slovak
  • Spanish
  • Swedish
  • Türkçe
  • Thai

Источник: best-coding.ru

Программы с числами в Python

В статье «Числа в Python» вы могли изучить теорию работы с числами в языке программирования Python. В этой статье вы сможете научиться создавать небольшие мини-программы применяя числа Python. Для того, чтобы вы могли проработать все примеры на своем компьютере не забудьте установить Python.

Вычисление времени в пути

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

print(«*» * 15, «Рассчет времени в пути «, «*» * 10) dist = 0 # Расстояние, которое нужно проехать speed = 0 # Средняя скорость авто, км/ч # Просим пользователя ввести данные dist = int(input(«Расстояние, которое нужно проехать: «)) speed = int(input(«Соединяя скорость: «)) time = dist * 60 / speed # Вычисляем время движения автомобиля print(«Будет затрачено «, time, » минут») # Выводим итог input(«Нажмите Enter для выхода») # Просим нажать кнопку для завершения программы

Читайте также:
Программа webcam нет звука

Программы с числами в Python

Результат работы программы:

Вычисления расхода топлива

В данном примере будем работать с дробными числами. Программа вычисляет расход топлива. Пользователь должен ввести средний расход и расстояние. Принцип программы такой же, как в предыдущем примере, но здесь мы хотим получить дробное значение. Чтобы понять, как работает программа, читайте комментарии. Листинг программы:

print(«*» * 15, «Расчет топлива «, «*» * 10) consum = 0 # Средний расход 10.5 л/100 км dist = 0 # Расстояние, км # Просим пользователя ввести данные consum = float(input(«Введите средний расход л./100 км: «)) dist = float(input(«Введите расстояние, км: «)) result = consum * dist / 100 # Вычисляем расход топлива print(«Будет затрачено «, result, » литров») # Выводим итог input(«Нажмите Enter для выхода») # Просим нажать кнопку для завершения программы

Результат работы программы:
Программы с числами в Python
Обратите внимание, что в качестве разделителя целой и дробной части используется точка, а не запятая. Если вы введёте 5.5, программа будет работать, а если вы введёте 5,5, то получите сообщение:
Программы с числами в Python

Консольный калькулятор

Разработаем самый простой калькулятор. Листинг программы:

print(«*» * 15, «Калькулятор «, «*» * 10) print(«Для выхода введите q в качестве знака операции») while True: s = input(«Знак (+,-,*,/): «) if s == ‘q’: break if s in (‘+’, ‘-‘, ‘*’, ‘/’): x = float(input(«x=»)) y = float(input(«y=»)) if s == ‘+’: print(«%.2f» % (x+y)) elif s == ‘-‘: print(«%.2f» % (x-y)) elif s == ‘*’: print(«%.2f» % (x*y)) elif s == ‘/’: if y != 0: print(«%.2f» % (x/y)) else: print(«Деление на ноль!») else: print(«Неверный знак операции!»)

  1. Запустим бесконечный цикл. Выход из него осуществлять с помощью оператора break, если пользователь вводит определенный символ вместо знака арифметической операции.
  2. Если пользователь ввел знак, который не является ни знаком арифметической операции, ни символом-«прерывателем» работы программы, то вывести сообщение о некорректном вводе.
  3. Если был введен один из четырех знаков операции, то запросить ввод двух чисел.
  4. В зависимости от знака операции выполнить соответствующее арифметическое действие.
  5. Если было выбрано деление, то необходимо проверить, не является ли нулем второе число. если это так, сообщить о невозможности деления.

Результат работы программы:

Программы с числами в Python

Источник: it-black.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru