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