SaliencyMapDemo / src /utils.py
umyuu
ๅ…ทไฝ“็š„ใชๆ“ไฝœ่ชฌๆ˜Žใ‚’่ฟฝๅŠ 
447b452
raw
history blame
1.74 kB
# -*- coding: utf-8 -*-
"""ใƒฆใƒผใƒ†ใ‚ฃใƒชใƒ†ใ‚ฃ"""
from dataclasses import dataclass
import time
def get_package_version() -> str:
"""
ใƒใƒผใ‚ธใƒงใƒณๆƒ…ๅ ฑ
"""
return '0.0.8'
@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:
"""
็ตŒ้Žๆ™‚้–“ใ‚’ๅ–ๅพ—ใ—ใพใ™ใ€‚
"""
if self._is_running:
end_time = time.perf_counter()
self._elapsed = end_time - 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 = Stopwatch()
stopwatch.start()
return stopwatch
def stop(self) -> float:
"""
่จˆๆธฌใ‚’็ต‚ไบ†ใ—ใพใ™ใ€‚
"""
if self._is_running:
end_time = time.perf_counter()
self._elapsed = end_time - self._start_time
self._is_running = False
return self._elapsed