Spaces:
Running
Running
File size: 2,006 Bytes
1bf41f9 8ccf878 f988527 1bf41f9 8ccf878 1bf41f9 8ccf878 46c8ce2 8ccf878 749b06e 1bf41f9 8ccf878 f988527 1bf41f9 afb0c77 271d94c 8ccf878 afb0c77 1bf41f9 f988527 1bf41f9 afb0c77 8ccf878 46c8ce2 8ccf878 afb0c77 46c8ce2 afb0c77 1bf41f9 f988527 46c8ce2 f988527 1bf41f9 8ccf878 1bf41f9 8ccf878 afb0c77 1bf41f9 46c8ce2 8ccf878 46c8ce2 8ccf878 1bf41f9 afb0c77 8ccf878 46c8ce2 8ccf878 afb0c77 46c8ce2 afb0c77 1bf41f9 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 |
# -*- coding: utf-8 -*-
"""ใฆใผใใฃใชใใฃ"""
from dataclasses import dataclass
import time
def get_package_version() -> str:
"""
ใใผใธใงใณๆ
ๅ ฑใๅๅพใใพใใ
"""
return '0.0.13'
@dataclass
class Stopwatch:
"""
็ต้ๆ้ใ่จๆธฌใใใใใฎใฏใฉในใ
Example:
from src.utils import Stopwatch
watch = Stopwatch.start_new()
### ่จๆธฌใใๅฆ็
print(f"{watch.elapsed:.3f}")
"""
_start_time: float = 0
_elapsed: float = 0
_is_running: bool = False
@property
def elapsed(self) -> float:
"""
่จๆธฌไธญใฎ็ต้ๆ้ใๅๅพใใพใใ
Returns:
float: ่จๆธฌไธญใฎ็ต้ๆ้(ๅฐๆฐ็ง)
"""
if self._is_running:
self._elapsed = time.perf_counter() - self._start_time
return self._elapsed
@property
def is_running(self) -> bool:
"""
่จๆธฌใๅฎ่กไธญใงใใใใฉใใใๅๅพใใพใ
"""
return self._is_running
def start(self) -> None:
"""
่จๆธฌใ้ๅงใใพใใ
"""
self._start_time = time.perf_counter()
self._elapsed = 0
self._is_running = True
@classmethod
def start_new(cls) -> 'Stopwatch':
"""
ๆฐใใในใใใใฆใฉใใใ็ๆใใ่จๆธฌใ้ๅงใใพใใ
Returns:
Stopwatch: ๆฐใใในใใใใฆใฉใใใชใใธใงใฏใ
"""
stopwatch = Stopwatch()
stopwatch.start()
return stopwatch
def stop(self) -> float:
"""
่จๆธฌใ็ตไบใใ็ต้ๆ้ใ่ฟใใพใใ
Returns:
float: ่จๆธฌไธญใฎ็ต้ๆ้
"""
if self._is_running:
self._elapsed = time.perf_counter() - self._start_time
self._is_running = False
return self._elapsed
|