检查或关闭Numpy / SciPy并行化

时间:2014-09-05 20:56:54

标签: python numpy parallel-processing scipy scikit-learn

我正在从sklearn包中运行一些K-Means聚类。

虽然我按照sklearn文档中的说明设置参数n_jobs = 1,虽然单个进程正在运行,但该进程显然会消耗我机器上的所有CPU。也就是说,在top中,我可以看到python作业正在使用,比如在4核计算机上使用400%。

要明确的是,如果我设置n_jobs = 2,那么我会运行两个python实例,但每个实例使用200%的CPU,再次消耗我机器的所有4个内核。

我认为这个问题可能是NumPy / SciPy层面的并行化。

有没有办法验证我的假设?有没有办法关闭NumPy / SciPy中的任何并行化,例如?

1 个答案:

答案 0 :(得分:1)

确实BLAS,或者我的OpenBLAS,正在执行并行化。

解决方案是将环境变量OMP_NUM_THREADS设置为1

然后一切都是正确的。