import time

# 直接在 __init__.py 中定义 Timer 类
__all__ = ['Timer']

class Timer:
    def __init__(self):
        self.start_time = 0
        self.end_time = 0
    
    def start(self):
        """开始计时"""
        self.start_time = time.ticks_ms()
        return self
    
    def stop(self):
        """停止计时"""
        self.end_time = time.ticks_ms()
        return self
    
    def reset(self):
        """重置计时器"""
        self.start_time = 0
        self.end_time = 0
        return self
    
    '''
    def elapsed(self):
        """返回经过的秒数"""
        _second = 0
        #second =  self.elapsed_ms() / 1000.0f
        return _second
    ''' 
    
    def elapsed(self):
        """返回经过的毫秒数""" 
        _end = time.ticks_ms()
        _ms = time.ticks_diff(_end, self.start_time)
        return _ms
    
    def elapsed_ms(self):
        """返回经过的毫秒数""" 
        _end = time.ticks_ms()
        _ms = time.ticks_diff(_end, self.start_time)
        return _ms
    
    def __enter__(self):
        """支持with语句的上下文管理器"""
        return self.start()

    def __exit__(self, exc_type, exc_val, exc_tb):
        """支持with语句的上下文管理器"""
        self.stop()
        return False  # 不处理异常 
    
    
def example_function():
    """示例函数：模拟一些耗时操作"""
    time.sleep(1)  # 模拟耗时1秒的操作
    
def main():
    # 方式1：使用start/stop方法
    timer = Timer()
    timer.start()
    example_function()
    timer.stop()
    costTime = timer.elapsed_ms()
    print(f"方式1 - 函数运行时间: {costTime:.3f} 秒")
    
    # 方式2：使用with语句（更优雅的方式）
    with Timer() as timer:
        example_function() 
        costTime = timer.elapsed()
        print(f"方式2 - 函数运行时间: {costTime:.3f} 秒")

if __name__ == '__main__':    
    main()