如何为Jupyter Notebook分配更多可用CPU资源?
Jupyter Notebook多CPU资源分配方法
默认Python代码受全局解释器锁(GIL)限制,单线程代码默认只能调用1个CPU核心,以下是可落地的配置方案:
方案1:修改Jupyter内核启动参数,绑定可用CPU核心
该配置可固定某款内核的可用CPU核心范围,所有使用该内核启动的Notebook都会生效:
- 首先执行命令查看现有Jupyter内核配置路径:
jupyter kernelspec list - 找到对应Python内核的
kernel.json文件,编辑该文件,在启动参数中添加CPU绑定规则:Linux环境下使用taskset绑定的示例配置:
{ "argv": [ "taskset", "-c", "0-7", "python", "-m", "ipykernel_launcher", "-f", "{connection_file}" ], "display_name": "Python 3 (8核)", "language": "python" } - 上述配置中的
0-7代表绑定CPU 0到7共8个核心,可根据实际可用资源调整数值,保存后重启Jupyter Notebook,选择对应内核启动即可生效。
方案2:代码层面直接调用多核心
如果只是单次任务需要用到多核心,不需要修改内核配置,直接改用支持多进程的计算逻辑即可避开GIL限制:
- 常规循环并行可使用
multiprocessing、concurrent.futures标准库实现多进程运算 - 特定场景可直接替换为原生支持多核心的第三方库:
- 数值计算:使用带MKL/OpenBLAS编译版本的
numpy,会自动调用多CPU核心 - 数据处理:使用
pandas2.0+的多进程接口,或替换为polars、Dask - 机器学习:
scikit-learn的多数模型支持n_jobs参数,设置n_jobs=-1即可调用全部可用核心
- 数值计算:使用带MKL/OpenBLAS编译版本的
方案3:共享集群调度场景的资源申请
如果使用的是SLURM等调度系统管理的共享服务器,启动Jupyter前需要先申请对应数量的CPU资源:
- 示例申请命令:
srun -c 8 --pty jupyter notebook --no-browser - 上述命令中
-c 8代表申请8个CPU核心,后续启动的Jupyter进程就可以使用申请到的全部核心
注意:共享机器使用多核心时不要超出管理员设定的单用户资源上限,避免影响其他用户使用
内容的提问来源于stack exchange,提问作者Bohm Arahnmob
相关产品推荐
相关产品推荐

