检查或关闭Numpy/SciPy并行计算
我正在使用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
。
这样一来,一切就都正常了。