我正在从 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/