Python在Ubuntu上如何高效运行
小樊
36
2025-12-06 15:04:41
高效运行 Python 的 Ubuntu 实践
基础环境搭建与运行
- 更新索引并安装基础工具:sudo apt update && sudo apt install -y python3 python3-pip python3-venv。
- 使用虚拟环境隔离依赖:python3 -m venv .venv && source .venv/bin/activate。
- 安装依赖与固化版本:pip install -r requirements.txt;pip freeze > requirements.txt。
- 运行脚本与服务:python3 app.py;生产可用 Gunicorn/uWSGI + Nginx 或容器化部署。
- 开发与调试:使用 VS Code(安装 Python 扩展)或 Jupyter Notebook(pip install jupyter;jupyter notebook)。
性能优化路线
- 先测量再优化:用 cProfile 定位瓶颈(cProfile.run(‘main()’)),配合 line_profiler 逐行分析,或用 memory_profiler 查内存热点。
- 选择合适解释器:对纯 Python 且存在大量循环/调用的场景,尝试 PyPy;对需要多语言/生态兼容的场景,使用 GraalVM 的 Python 支持。
- 加速关键路径:用 Cython 编写热点函数(cythonize -i your_module.pyx);对数值计算优先 NumPy/Pandas;对可并行任务用 Numba JIT(@jit(nopython=True))。
- 并发模型:I/O 密集型用 asyncio/多线程;CPU 密集型用 multiprocessing 或进程池;分布式/大数据用 Dask。
- 数据规模超出内存:用 生成器/迭代器 流式处理,或 Dask 分块计算。
- 缓存重复计算:用 functools.lru_cache 减少重复开销。
依赖与环境管理
- 始终在虚拟环境内工作(venv/conda),避免系统包冲突。
- 固化依赖版本(requirements.txt),并在 CI 中校验一致性。
- 区分运行时与开发时依赖(如用 dev-requirements.txt 管理测试/调试工具)。
- 配置与密钥使用 dotenv(python-dotenv)管理,避免硬编码。
部署与运维效率
- 容器化交付:使用 Docker 保证环境一致性,示例 Dockerfile:
FROM python:3.11-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
CMD [“gunicorn”, “app:app”, “-b”, “0.0.0.0:5000”]
构建与运行:docker build -t myapp . && docker run -d -p 5000:5000 myapp。
- 进程管理:使用 systemd 或 supervisord 守护进程、自动重启与日志轮转。
- 监控与排障:非侵入式采样 py-spy top 观察热点;必要时用 Intel VTune Profiler 深入分析。
- 资源与稳定性:为 CPU/内存密集型任务设置合适的 worker 数量 与 超时,并配置 反向代理/负载均衡。
场景化建议
- 数据科学与机器学习:优先 NumPy/Pandas 向量化;GPU 计算用 CuPy;热点函数用 Numba 或迁移到 Cython;超大数据用 Dask 分块与延迟计算。
- Web 后端与高并发:I/O 密集选 asyncio + Uvicorn/FastAPI 或多进程 Gunicorn 工作进程;静态资源交由 Nginx;用 cProfile/py-spy 定位慢路由与阻塞调用。
- 命令行工具与批处理:用 生成器 流式处理大文件;对重复子任务加 lru_cache;多核 CPU 用 multiprocessing.Pool 并行化。