Добавлен класс для замера времени выполнения скрипта

This commit is contained in:
Ilia Miheev
2025-10-01 20:17:04 +03:00
parent be77ec2f6c
commit 1718d7bcec
3 changed files with 80 additions and 1 deletions
+36
View File
@@ -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
+42
View File
@@ -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)
+1
View File
@@ -2,3 +2,4 @@ from .ParsManagerCode import Pars
from .JsonManagerCode import JsonManager
from .CsvManagerCode import CsvManager
from .ProgressBarCode import ProgressBarManager
from .TimerManagerCode import TimerManager