pip install 默认单线程安装,不支持多核并行;提速需靠 pip wheel -j N 并行构建 wheel、pip-tools 预编译解耦构建与安装,或启用 --use-pep517 与 --no-build-isolation 复用构建缓存。

pip install 默认不支持多核并行,得靠 pip 自身参数或外部工具
pip 本身没有内置的多 CPU 核心并发安装机制。它按顺序解析依赖、下载、构建、安装,哪怕你机器有 32 核,pip install 默认也只用 1 个线程干活。所谓“多核并行安装”,实际是通过并行下载 + 并行构建(非安装)来提速,而安装步骤仍串行——因为 Python 包安装涉及 site-packages 写入、.pth 文件更新、entry_points 注册等互斥操作。
用 --use-pep517 和 --no-build-isolation 减少重复构建开销
很多耗时来自重复编译:同一个源码包,每个依赖都可能触发一次 setup.py build 或 pyproject.toml 构建。启用 PEP 517 构建协议并禁用隔离环境,能让 pip 复用已构建的 wheel 缓存,避免反复调用 build-backend。
-
--use-pep517:强制使用现代构建协议(多数新包默认启用) -
--no-build-isolation:不为每次构建启动干净虚拟环境,复用当前环境中的构建依赖(如setuptools,wheel,cython) - 二者配合可显著减少 C 扩展包(如
numpy,pandas)的重复编译时间
用 pip-tools + pip-sync 预编译 wheel 并批量安装
真正提升“安装阶段”效率的方式,是把构建和安装解耦:先在多核机器上批量预编译好所有依赖的 wheel(可并行),再用 pip install *.whl 快速安装。这需要借助 pip-tools:
pip-compile requirements.in # 生成 pinned 的 requirements.txt pip wheel --no-deps --wheel-dir ./wheels -r requirements.txt # 并行下载+构建 wheel(自动用多核) pip install --find-links ./wheels --no-index -r requirements.txt # 离线、无网络、纯安装
注意:pip wheel 默认会并行下载和构建(受 -j 控制,如 pip wheel -j 8 ...),但 pip install 仍串行安装 wheel——这是设计使然,无法绕过。
立即学习“Python免费学习笔记(深入)”;
使用位于 ci-tools.xrow.de 的 CI Tools 组件目录构建和维护 GitLab CI/CD 流水线,适用于创建或修复 .gitlab-ci.yml 文件,选择合适的组件。
别信 pip install -j 4 这种伪参数
pip 命令行根本没有 -j 或 --jobs 参数。如果你在某些博客里看到这个写法,要么是混淆了 make -j,要么是误用了旧版 pip-accel(已弃用)或第三方 fork。运行 pip install -j 4 requests 会直接报错:
unrecognized arguments: -j 4
真正能控制并发的只有:pip wheel -j N(仅限 wheel 构建阶段)、pip download -j N(仅限下载阶段)。安装环节永远单线程,这是 pip 的底层约束,不是配置问题。
最易被忽略的一点:即使你用 pip wheel -j 16 把所有包编译好了,最后那句 pip install *.whl 依然一个一个装——如果某个 wheel 有 post-install 脚本(比如 torch 的 CUDA 绑定注册),这个脚本执行期间其他安装必须等待。

















