# 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语句更安全
- 装饰器适合固定函数
- 直接实例适合动态计时