检查或关闭Numpy/SciPy并行计算

4 投票
1 回答
738 浏览
提问于 2025-04-20 02:27

我正在使用sklearn这个库进行K-Means聚类。

虽然我按照sklearn的说明设置了参数n_jobs = 1,并且确实只运行了一个进程,但这个进程似乎会占用我机器上所有的CPU。也就是说,在top命令中,我可以看到这个python任务在一个4核的机器上使用了大约400%的CPU。

为了更清楚,如果我设置n_jobs = 2,那么就会有两个python实例在运行,但每个实例又会使用200%的CPU,依然占用了我机器的所有4个核心。

我觉得这个问题可能和NumPy/SciPy的并行处理有关。

有没有办法验证我的猜想?有没有办法关闭NumPy/SciPy中的任何并行处理呢?

1 个回答

1

确实,在我的情况下,BLAS,或者说OpenBLAS,负责处理并行计算。

解决办法是把环境变量 OMP_NUM_THREADS 设置为 1

这样一来,一切就都正常了。

撰写回答