Добавлен класс для замера времени выполнения скрипта
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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)
|
||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user