我正在从sklearn包中运行一些K-Means聚类。
虽然我按照sklearn文档中的说明设置参数n_jobs = 1
,虽然单个进程正在运行,但该进程显然会消耗我机器上的所有CPU。也就是说,在top
中,我可以看到python作业正在使用,比如在4核计算机上使用400%。
要明确的是,如果我设置n_jobs = 2
,那么我会运行两个python实例,但每个实例使用200%的CPU,再次消耗我机器的所有4个内核。
我认为这个问题可能是NumPy / SciPy层面的并行化。
有没有办法验证我的假设?有没有办法关闭NumPy / SciPy中的任何并行化,例如?
答案 0 :(得分:1)
确实BLAS,或者我的OpenBLAS,正在执行并行化。
解决方案是将环境变量OMP_NUM_THREADS
设置为1
。
然后一切都是正确的。