# myTimer.py 函数文档 高精度计时器模块,提供多种计时方式和装饰器功能。 ## myTimer 类 ### 初始化
python
def __init__(self)

- 功能: 初始化计时器
- 属性:
- start_time: 开始时间戳
- end_time: 结束时间戳 ### 基本计时方法 #### start(self)
python
def start(self)

- 功能: 开始计时
- 实现: 记录当前毫秒时间戳
- 返回: self (支持链式调用) #### stop(self)
python
def stop(self)

- 功能: 停止计时
- 实现: 记录结束时间戳
- 返回: self (支持链式调用) #### reset(self)
python
def reset(self)

- 功能: 重置计时器
- 实现: 清零开始和结束时间戳
- 返回: self (支持链式调用) ### 时间获取方法 #### elapsed(self)
python
def elapsed(self)

- 功能: 获取经过的秒数
- 返回: 浮点数,精确到毫秒
- 单位: 秒 #### elapsed_ms(self)
python
def elapsed_ms(self)

- 功能: 获取经过的毫秒数
- 返回: 整数
- 单位: 毫秒 ### 上下文管理器支持
python
def __enter__(self)
def __exit__(self, exc_type, exc_val, exc_tb)

- 功能: 支持with语句使用
- 特性: 自动处理开始和结束计时
- 异常处理: 不捕获异常 ## measure_time 装饰器 ### 函数定义
python
def measure_time(func=None, *, unit='s', print_result=True)

- 功能: 测量函数运行时间的装饰器
- 参数:
- func: 要测量的函数
- unit: 时间单位 ('s'秒或'ms'毫秒)
- print_result: 是否打印结果
- 返回值:
- print_result=True: 返回原函数结果
- print_result=False: 返回(原函数结果, 运行时间)元组 ## 使用示例 ### 基本计时
python
# 方式1:直接使用
timer = myTimer()
timer.start()
# 执行代码
timer.stop()
print(f"耗时: {timer.elapsed():.3f} 秒")
### 上下文管理器
python
# 方式2:with语句
with myTimer() as timer:
# 执行代码
print(f"耗时: {timer.elapsed():.3f} 秒")
### 装饰器使用
python
# 方式3:简单装饰器
@measure_time
def my_function():
# 函数代码
pass # 方式4:带参数装饰器
@measure_time(unit='ms', print_result=False)
def another_function():
# 函数代码
return "结果" result, time_taken = another_function()
## 高级用法 ### 链式调用
python
elapsed = myTimer().start().elapsed_ms()
### 精确计时
python
timer = myTimer()
timer.start()
for _ in range(1000000):
pass
print(f"循环耗时: {timer.elapsed_ms()} 毫秒")
### 装饰器定制
python
@measure_time(unit='ms', print_result=False)
def performance_critical():
result = complex_calculation()
return result result, execution_time = performance_critical()
if execution_time > 1000: # 超过1秒
log_performance_issue(execution_time)
## 技术规格 1. 时间精度
- 毫秒级精确度
- 基于time.ticks_ms()实现
- 支持长时间计时 2. 性能特性
- 低开销实现
- 支持嵌套使用
- 线程安全设计 3. 装饰器特性
- 保留原函数信息
- 灵活的配置选项
- 支持返回值处理 ## 注意事项 1. 计时精度
- 受系统时钟精度限制
- 考虑测量开销
- 适当选择时间单位 2. 装饰器使用
- 注意返回值处理
- 合理设置打印选项
- 考虑异常处理 3. 性能考虑
- 避免频繁创建实例
- 合理使用reset()
- 注意长时间计时溢出 4. 最佳实践
- 使用with语句更安全
- 装饰器适合固定函数
- 直接实例适合动态计时