第1章:测试环境搭建——硬件环境选型、软件依赖安装
大家好,我是你们的老朋友。今天咱们聊聊算法性能批量验证的第一步——环境搭建。
说实话,很多同学一上来就急着写代码、跑测试,结果环境没配好,折腾半天全白费。我当年就吃过这个亏。记得有一次,我在一台内存只有8G的笔记本上跑批量验证,数据量稍微大一点,直接卡死。从那以后,我养成了一个习惯:先搭环境,再写代码。
1.1 硬件环境选型
硬件选型这事儿,说白了就是看你的算法要跑多大规模的数据。
我个人习惯把硬件需求分成三个档次:
| 档次 | 适用场景 | 推荐配置 |
|---|---|---|
| 入门级 | 小规模验证(数据量 < 1GB) | 4核CPU、8GB内存、256GB SSD |
| 进阶级 | 中等规模验证(数据量 1GB~10GB) | 8核CPU、16GB内存、512GB SSD |
| 专业级 | 大规模验证(数据量 > 10GB) | 16核CPU、32GB+内存、1TB NVMe SSD |
你想想看,如果你的算法要处理上千万条记录,内存不够的话,光是磁盘I/O就能把你拖死。我在项目中遇到过一位同事,用8GB内存跑2000万条数据的排序验证,结果跑了整整一个下午还没跑完。后来换了台32GB内存的机器,半小时就搞定了。
1.2 软件依赖安装
硬件搞定了,接下来就是软件环境。嗯,这里要注意,千万别一股脑全装最新版。我见过太多人因为版本不兼容,折腾一整天。
1.2.1 Python 安装
Python 版本我建议用 3.8 或 3.9。为什么?因为很多科学计算库对 3.10 以上的支持还不够稳定。我曾经在 3.11 上跑 pandas,结果有个底层依赖报错,查了半天才发现是版本问题。
安装步骤很简单:
- 去 python.org 下载对应版本
- 安装时记得勾选「Add Python to PATH」
- 打开终端,输入
python --version验证
py -3.9 -m pip install 指定版本。
1.2.2 pytest 安装
pytest 是我们做批量验证的核心工具。它比 unittest 好用太多了,尤其是参数化测试和 fixture 功能,简直是批量验证的神器。
pip install pytest
装完之后,你可以跑一下 pytest --version 确认安装成功。我建议装 7.x 版本,功能最全,社区也最活跃。
1.2.3 pandas 安装
pandas 是处理测试数据的利器。批量验证中,我们经常需要读取 CSV、Excel 等格式的数据,然后做对比分析。
pip install pandas
这里有个小坑:pandas 依赖 numpy,而 numpy 在某些 CPU 上需要编译。如果你遇到安装失败,可以试试预编译的 wheel 包:
pip install pandas --only-binary=:all:
1.3 虚拟环境配置
虚拟环境这事儿,我建议每个项目都配一个。为什么?因为不同项目可能依赖不同版本的库,混在一起迟早出问题。
我个人习惯用 venv,它是 Python 自带的,不需要额外安装。
1.3.1 创建虚拟环境
python -m venv algo_bench_env
这条命令会在当前目录下创建一个叫 algo_bench_env 的文件夹,里面就是独立的 Python 环境。
1.3.2 激活虚拟环境
Windows 下:
algo_bench_env\Scripts\activate
Linux/Mac 下:
source algo_bench_env/bin/activate
激活后,终端前面会出现 (algo_bench_env) 的标识,说明你已经在虚拟环境里了。
1.3.3 安装依赖到虚拟环境
激活虚拟环境后,再执行 pip install,所有包都会安装到这个环境里,不会影响系统全局。
pip install pytest pandas
你可以用 pip list 查看当前环境安装了哪些包。我建议把依赖写到一个 requirements.txt 文件里,方便别人复现:
pytest==7.4.0
pandas==2.0.3
然后别人只需要执行 pip install -r requirements.txt 就能一键安装所有依赖。
1.4 知识体系总览
下面这张图,是我画的环境搭建的整体流程。你一看就明白了:
1.5 验证环境是否搭建成功
环境搭好了,怎么知道对不对?我一般会写一个简单的测试脚本:
# test_env.py
import pytest
import pandas as pd
def test_pandas_works():
df = pd.DataFrame({'a': [1, 2, 3], 'b': [4, 5, 6]})
assert df.shape == (3, 2)
print("pandas 环境正常!")
def test_pytest_works():
assert 1 + 1 == 2
print("pytest 环境正常!")
if __name__ == "__main__":
pytest.main(["-v", "test_env.py"])
跑一下 python test_env.py,如果两个测试都通过,说明你的环境已经搭建成功了。
好了,环境搭建就聊到这儿。记住我说的:先搭环境,再写代码。下一章咱们开始写第一个批量验证脚本,到时候你就知道环境搭好了有多爽了。
可可精品资料库