# Python/MicroPython 通用计时器库

这是一个同时支持标准Python和MicroPython的轻量级计时器库，能够自动检测运行环境并使用合适的计时函数。

## 功能特点

- 自动检测运行环境（标准Python/MicroPython）
- 统一的API，同时支持两种环境
- 高精度时间测量
- 支持开始、停止和重置操作
- 提供上下文管理器接口（with语句）
- 包含函数装饰器用于快速测量函数执行时间
- 轻量级设计，易于使用和集成

## 环境适配

该库会自动检测当前运行环境：
- 在标准Python中使用 `time.perf_counter()`
- 在MicroPython中使用 `time.ticks_ms()` 和 `time.ticks_diff()`

你可以通过以下方式查看当前环境：
```python
from timer import MICROPYTHON, IMPLEMENTATION

print(f"当前运行环境: {IMPLEMENTATION}")
print(f"是否为MicroPython: {'是' if MICROPYTHON else '否'}")
```

## 使用方法

### 基本用法

```python
from timer import Timer, sleep_ms

# 创建计时器实例
timer = Timer()

# 开始计时
timer.start()

# 执行需要测量的代码
sleep_ms(500)  # 休眠500毫秒

# 停止计时
timer.stop()

# 获取经过的时间（毫秒）
elapsed = timer.elapsed_ms()
print(f"经过时间: {elapsed:.3f}ms")

# 获取经过的时间（秒）
elapsed_sec = timer.elapsed_seconds()
print(f"经过时间: {elapsed_sec:.3f}秒")
```

### 上下文管理器

```python
from timer import Timer, sleep_ms

# 使用with语句自动开始和停止计时
with Timer() as timer:
    sleep_ms(300)  # 休眠300毫秒

print(f"经过时间: {timer.elapsed_ms():.3f}ms")
```

### 装饰器

```python
from timer import measure_time, sleep_ms

# 使用装饰器测量函数执行时间
@measure_time
def my_function():
    sleep_ms(200)  # 休眠200毫秒

# 调用函数时会自动打印执行时间
result = my_function()
```

### 多次测量

```python
from timer import Timer, sleep_ms

timer = Timer()

# 第一次测量
timer.start()
sleep_ms(100)  # 休眠100毫秒
timer.stop()
print(f"第一次测量: {timer.elapsed_ms():.3f}ms")

# 重置计时器
timer.reset()

# 第二次测量
timer.start()
sleep_ms(150)  # 休眠150毫秒
timer.stop()
print(f"第二次测量: {timer.elapsed_ms():.3f}ms")
```

## API 参考

### Timer 类

- `__init__()` - 初始化计时器
- `start()` - 开始计时
- `stop()` - 停止计时
- `reset()` - 重置计时器
- `elapsed_ms()` - 返回经过的毫秒数
- `elapsed_seconds()` - 返回经过的秒数
- `__enter__` 和 `__exit__` - 支持上下文管理器

### 工具函数

- `sleep_ms(ms)` - 休眠指定的毫秒数
- `measure_time(func)` - 装饰器函数，用于测量并打印函数执行时间
- `is_micropython()` - 检测当前是否在MicroPython环境中运行

### 环境变量

- `MICROPYTHON` - 布尔值，指示是否在MicroPython环境中运行
- `IMPLEMENTATION` - 字符串，当前Python实现的名称

## 技术细节

- 在标准Python中使用 `time.perf_counter()` 进行高精度计时
- 在MicroPython中使用 `time.ticks_ms()` 和 `time.ticks_diff()` 进行计时
- 统一的毫秒级精度
- 自动环境检测和适配
- 跨平台兼容性支持

## 注意事项

- 计时精度取决于运行环境和硬件性能
- 在MicroPython环境中，计时器溢出处理由MicroPython的ticks函数自动处理
- 为了获得更准确的测量结果，建议在测试期间避免运行其他资源密集型程序
- 在标准Python的Windows系统上，时间精度可能会受到系统计时器分辨率的影响