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