SaliencyMapDemo / src /utils.py
umyuu
0.0.13
749b06e
raw
history blame
2.01 kB
# -*- 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