time watchを作成する
This commit is contained in:
parent
c8453538b0
commit
748434e2cf
57
src/libs/time_watcg.py
Normal file
57
src/libs/time_watcg.py
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
import time
|
||||||
|
|
||||||
|
|
||||||
|
class SimpleLogger:
|
||||||
|
def debug(self, message):
|
||||||
|
print(message)
|
||||||
|
|
||||||
|
|
||||||
|
class TimeWatch:
|
||||||
|
def __init__(self, logger=None):
|
||||||
|
if not logger:
|
||||||
|
logger = SimpleLogger()
|
||||||
|
self.logger = logger
|
||||||
|
self.start_time = None
|
||||||
|
self.end_time = None
|
||||||
|
|
||||||
|
def start(self):
|
||||||
|
self.start_time = time.time()
|
||||||
|
self.logger.debug("Timer started.")
|
||||||
|
|
||||||
|
def stop(self):
|
||||||
|
self.end_time = time.time()
|
||||||
|
self.logger.debug("Timer stopped.")
|
||||||
|
|
||||||
|
def elapsed_time(self):
|
||||||
|
if self.start_time is None:
|
||||||
|
raise ValueError("Timer has not been started.")
|
||||||
|
if self.end_time is None:
|
||||||
|
raise ValueError("Timer has not been stopped.")
|
||||||
|
elapsed = self.end_time - self.start_time
|
||||||
|
self.logger.debug(f"Elapsed time: {elapsed} seconds")
|
||||||
|
return elapsed
|
||||||
|
|
||||||
|
def reset(self):
|
||||||
|
self.start_time = None
|
||||||
|
self.end_time = None
|
||||||
|
self.logger.debug("Timer reset.")
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def debug(cls, func):
|
||||||
|
def wrapper(*args, **kwargs):
|
||||||
|
instance = cls() # インスタンスを作成
|
||||||
|
instance.start()
|
||||||
|
result = func(*args, **kwargs)
|
||||||
|
instance.stop()
|
||||||
|
instance.elapsed_time()
|
||||||
|
return result
|
||||||
|
return wrapper
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
@TimeWatch.debug
|
||||||
|
def test_function():
|
||||||
|
time.sleep(2)
|
||||||
|
return "Function executed."
|
||||||
|
|
||||||
|
test_function()
|
Loading…
x
Reference in New Issue
Block a user