应用sklearn.Linear_model.LinearRegression时如何限制CPU的使用?

How to limit the CPU usage when applying sklearn.Linear_model.LinearRegression?

我需要限制以下命令的 CPU 用法,因为它使用了 100% 的 CPU。

    from sklearn.linear_model import LinearRegression
    model = LinearRegression(fit_intercept = True, n_jobs = 1)
    model.fit(df_x0, df_y0)
    model.predict(df_x1)

我已经设置了 n_jobs == 1,我没有使用多处理,但它仍然保持 CPU 完全占用所有内核和 df_y0ndim == 1,我了解到如果这样的话n_jobs将不会有效

谁能告诉我为什么它使用了 100% 的 CPU,以及如何在 python 中解决它?

Python 3.7, Linux.

使用 n_jobs=1 它使用其中一个核心的 100% CPU。每个进程 运行 在不同的核心中,每个进程都占用给定核心的 100% 使用率。 在Linux 4核中可以清楚的看到CPU用法:

  • (100%,~5%, ~5%, ~5%) 当它 运行s n_jobs=1(如果你指定 n_jobs1只使用了一个核心)。

  • (100%, 100%, 100%, 100%)当运行n_jobs=-1时(如果你指定n_jobs-1,它将使用 所有内核 )。

此外,您可以根据他在 Linux

下使用 scikit-learn 0.20.3 进行的测试检查@kenlukas answer

更新: 要完成问题 Unintended multithreading in Python (scikit-learn) 的所有场景,请查看答案

如果您想动态设置线程数,而不是通过环境变量全局设置,例如:

import mkl
mkl.set_num_threads(2)