Добавлен класс для замера времени выполнения скрипта
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
-1
@@ -1,4 +1,5 @@
|
||||
from .ParsManagerCode import Pars
|
||||
from .JsonManagerCode import JsonManager
|
||||
from .CsvManagerCode import CsvManager
|
||||
from .ProgressBarCode import ProgressBarManager
|
||||
from .ProgressBarCode import ProgressBarManager
|
||||
from .TimerManagerCode import TimerManager
|
||||
|
||||
Reference in New Issue
Block a user