From 1718d7bcecf98ed3d57152e64d9780853ac87cb5 Mon Sep 17 00:00:00 2001 From: Ilia Miheev Date: Wed, 1 Oct 2025 20:17:04 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=20=D0=BA=D0=BB=D0=B0=D1=81=D1=81=20=D0=B4=D0=BB=D1=8F=20?= =?UTF-8?q?=D0=B7=D0=B0=D0=BC=D0=B5=D1=80=D0=B0=20=D0=B2=D1=80=D0=B5=D0=BC?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=20=D0=B2=D1=8B=D0=BF=D0=BE=D0=BB=D0=BD=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D1=8F=20=D1=81=D0=BA=D1=80=D0=B8=D0=BF=D1=82=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 36 +++++++++++++++++++++++++++++++++ ipars/TimerManagerCode.py | 42 +++++++++++++++++++++++++++++++++++++++ ipars/__init__.py | 3 ++- 3 files changed, 80 insertions(+), 1 deletion(-) create mode 100644 ipars/TimerManagerCode.py diff --git a/README.md b/README.md index 99f7bf3..0f4c90e 100644 --- a/README.md +++ b/README.md @@ -246,6 +246,42 @@ for _ in range(maxValue): bar.finish() ``` +## Работа с TimerManager + +Класс TimerManager предназначен для отслеживания времени выполнения кода. Он позволяет получить общее время работы в различных форматах. + +```py +from ipars import TimerManager + +t = TimerManager() +``` + +### Коротко о методах TimerManager + +1. Метод **start** — точка начала отсчёта времени + +2. Метод **end** — конечная точка отсчёта времени + +3. Метод **getWorkTime** возвращает общее время работы в указанном формате. Поддерживаемые форматы: _seconds_, _minutes_, _hours_. Параметр _ndigits_ указывает количество знаков после запятой для округления, по умолчанию число не округляется. + +### Пример использования TimerManager + +```py +from time import sleep +from ipars import TimerManager +t = TimerManager() + +# Засекаем время +t.start() +sleep(2) +t.end() + +# Выводим результат в разных форматах +print(f"Время работы в секундах: {t.getWorkTime()}") # 2.0008320808410645 +print(f"Время работы в минутах: {t.getWorkTime(ndigits=2, format='minutes')}") # 0.03 +print(f"Время работы в часах: {t.getWorkTime(ndigits=4, format='hours')}") # 0.0006 +``` + Если ты дочитал(-а) документацию до конца, то получай пожизненный запас здоровья❤. Помни, оно у тебя одно. +999999 HP diff --git a/ipars/TimerManagerCode.py b/ipars/TimerManagerCode.py new file mode 100644 index 0000000..e84dbe3 --- /dev/null +++ b/ipars/TimerManagerCode.py @@ -0,0 +1,42 @@ +import time + +class TimerManager: + '''Класс для отслеживания времени работы''' + def __init__(self): + '''Инициализация''' + self.startTime = 0 + self.endTime = 0 + self.workTime = 0 + + def start(self) -> None: + '''Устанавливает начальное время''' + self.startTime = time.time() + + def end(self) -> None: + '''Устанавливает конечное время''' + self.endTime = time.time() + self.workTime = self.endTime - self.startTime + + def getWorkTime(self, format :str = 'seconds', ndigits :int = None) -> int: + '''Возвращает время в нужном формате''' + time_units = { + 'seconds': 1, + 'minutes': 60, + 'hours': 3600 + } + + # Обработка ошибок + if self.startTime == 0: + raise ValueError('Для замера времени обязательно надо использовать метод "start" ДО выполнения кода') + + if self.endTime == 0: + raise ValueError('Для замера времени обязательно надо использовать метод "stop" ПОСЛЕ выполнения кода') + + if format not in time_units: + raise ValueError(f"Неподдерживаемый формат '{format}'. Должен быть один из {list(time_units.keys())}") + + # Округление результата + if ndigits is None: + return self.workTime / time_units[format] + else: + return round(self.workTime / time_units[format], ndigits=ndigits) diff --git a/ipars/__init__.py b/ipars/__init__.py index f34101f..c2e5a37 100644 --- a/ipars/__init__.py +++ b/ipars/__init__.py @@ -1,4 +1,5 @@ from .ParsManagerCode import Pars from .JsonManagerCode import JsonManager from .CsvManagerCode import CsvManager -from .ProgressBarCode import ProgressBarManager \ No newline at end of file +from .ProgressBarCode import ProgressBarManager +from .TimerManagerCode import TimerManager