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

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

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

我相信问题可能是 NumPy/SciPy 级别的并行化。

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

最佳答案

事实上,BLAS,或者在我的例子中是 OpenBLAS,正在执行并行化。

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

那么世界就一切正常了。

关于python - 检查或关闭 Numpy/SciPy 并行化,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25693870/

10-10 17:52