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

Ubuntu 20.04下numpy、Matplotlib部分函数执行卡住100%CPU无返回求助

故障根因分析与解决方案

你遇到的问题本质是底层系统依赖库冲突,以下是对应排查修复步骤:

1 优先排查OpenBLAS线程冲突(大概率匹配你的故障表现)

np.linalg.norm指定ord=2时会调用BLAS库的SVD计算接口,Anaconda和Ubuntu源默认携带的OpenBLAS库在多CPU核心/多GPU环境下经常出现线程亲和性配置错误,导致单线程死锁、单核CPU占满100%。同时OpenBLAS的冲突也会联动影响依赖底层数值计算库的matplotlib渲染逻辑。

验证方法

执行命令临时设置OpenBLAS单线程运行,再执行测试代码:

export OPENBLAS_NUM_THREADS=1
python3 your_test_code.py

如果测试代码正常运行即可确认是该问题。

永久修复方案

  • 方案1:将单线程配置写入终端环境配置文件,执行以下命令即可:
echo 'export OPENBLAS_NUM_THREADS=1' >> ~/.bashrc
source ~/.bashrc
  • 方案2:替换numpy后端为英特尔MKL数学库,稳定性更强:
conda install -y libmkl mkl-service
conda install -y numpy --force-reinstall

2 排查matplotlib后端冲突

你当前使用的TkAgg后端依赖系统的Tk图形库,容易和驱动、数值库冲突,可通过更换后端解决:

临时验证

在导入matplotlib后第一行添加后端切换代码,测试是否能正常运行:

import matplotlib
matplotlib.use('Qt5Agg') # 交互场景用,非交互渲染可用Agg
import matplotlib.pyplot as plt

永久修改默认后端

修改matplotlib配置文件~/.config/matplotlib/matplotlibrc,添加/修改以下配置:

backend: Qt5Agg

如果系统缺少Qt5依赖,执行命令安装即可:

sudo apt install -y python3-pyqt5
# Anaconda环境执行:conda install -y pyqt

3 排查内核与驱动兼容性问题

你当前使用的5.11.0 HWE内核和NVIDIA 470版本驱动存在已知兼容性问题,可尝试回退到Ubuntu 20.04默认的5.4 LTS内核验证:

  1. 重启系统,在GRUB引导界面选择「Ubuntu高级选项」
  2. 选择版本为5.4.x的内核启动,测试故障是否消失

4 修复损坏的系统依赖包

如果以上方案都无效,可尝试重新安装可能损坏的底层系统库:

sudo apt update
sudo apt install -y --reinstall libopenblas-dev libgfortran5 libtk8.6 libx11-dev

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 22:15:03