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

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() 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 +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 .JsonManagerCode import JsonManager
from .CsvManagerCode import CsvManager from .CsvManagerCode import CsvManager
from .ProgressBarCode import ProgressBarManager from .ProgressBarCode import ProgressBarManager
from .TimerManagerCode import TimerManager