应用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_y0
。
ndim == 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_jobs
到 1, 只使用了一个核心)。
(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)
我需要限制以下命令的 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_y0
。
ndim == 1
,我了解到如果这样的话n_jobs
将不会有效
谁能告诉我为什么它使用了 100% 的 CPU,以及如何在 python 中解决它?
Python 3.7, Linux.
使用 n_jobs=1
它使用其中一个核心的 100% CPU。每个进程 运行 在不同的核心中,每个进程都占用给定核心的 100% 使用率。
在Linux 4核中可以清楚的看到CPU用法:
(100%,~5%, ~5%, ~5%)
当它 运行sn_jobs=1
(如果你指定n_jobs
到 1, 只使用了一个核心)。(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)