You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解除Python(Jupyter Notebook)10%的CPU限制并自定义设置?

解决Jupyter Notebook/Python CPU限制问题

一、先定位CPU限制的根源

  • 先搞清楚是系统层面的强制限制,还是代码本身没用到多核心:
    • 打开系统监控工具(Windows任务管理器、Linux htop、macOS活动监视器),查看Python进程的CPU占用情况。如果是10%左右,先检查:
      • 是不是系统给进程设置了CPU亲和性(只允许用某几个核心);
      • 是不是代码是单线程逻辑,而你的机器有10个核心(单线程最多占10%左右,这是Python GIL的正常表现,不是被限制)。

二、突破CPU限制的具体方案

1. 解除系统级的CPU限制

  • Windows:
    打开任务管理器 → 找到Jupyter/Python进程 → 右键选择「转到详细信息」→ 再次右键该进程 → 「设置相关性」→ 勾选所有可用的CPU核心。
  • Linux/macOS:
    • 先排查是否有cpulimit工具在限制进程:运行ps aux | grep cpulimit,如果有对应的限制进程,直接终止它。
    • 调整CPU亲和性:先通过ps aux | grep python找到进程PID,然后运行taskset -c 0-<核心数-1> <PID>(比如8核机器就用0-7),让进程能使用所有核心。

2. 优化代码利用多核心(针对单线程瓶颈)

如果是单线程代码因为GIL只能用一个核心,就改成多进程模式(CPU密集任务用多进程,IO密集用多线程):

  • 用multiprocessing模块拆分任务:
from multiprocessing import Pool

def heavy_calc(num):
    # 这里写你的CPU密集型计算逻辑
    return sum(range(num))

if __name__ == '__main__':
    # processes设为你的CPU核心数
    with Pool(processes=4) as pool:
        results = pool.map(heavy_calc, [1000000]*4)
  • 用concurrent.futures更简洁实现:
from concurrent.futures import ProcessPoolExecutor

def heavy_calc(num):
    return sum(range(num))

with ProcessPoolExecutor(max_workers=4) as executor:
    results = list(executor.map(heavy_calc, [1000000]*4))

3. 检查Jupyter自身配置

Jupyter默认没有CPU限制,但如果是用conda或第三方工具启动的,可能有隐藏配置:

  • 先运行jupyter notebook --generate-config生成配置文件,打开后搜索resource_use_display相关项,确保没有设置CPU限制的参数。
  • 如果用JupyterLab,检查是否安装了资源限制类的扩展,有的话直接禁用或调整设置。

三、自定义CPU限制阈值

如果是需要主动限制CPU占用(而非解除限制),可以这么做:

  • Windows:用任务管理器右键进程→「设置优先级」,或者用Process Lasso这类工具自定义限制比例。
  • Linux/macOS:
    • 用cpulimit工具:cpulimit -p <PID> -l 50(限制该进程CPU占用不超过50%)。
    • 用renice调整优先级:renice -n 10 <PID>(数值越大,进程优先级越低,CPU分配越少)。

内容的提问来源于stack exchange,提问作者balalala

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 17:30:51