我需要限制以下命令的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,并且我没有使用多进程,但是它仍然使所有内核和df_y0都占用了全部的CPU。ndim == 1,我了解到如果是这样的话,n_jobs就不会有效。
有人能告诉我为什么它使用100%的CPU,以及如何在python中解决它吗?
Python 3.7,Linux。
发布于 2020-01-01 15:15:44
对于n_jobs=1,它使用其中一个核心的100%的CPU。每个进程在不同的核心中运行,每个进程都100%地使用给定的核心。在具有4个内核的Linux中,可以清楚地看到CPU的使用情况:
(100%,~5%, ~5%, ~5%)在运行n_jobs=1时(如果将n_jobs指定为1,则只使用一个核心)。(100%, 100%, 100%, 100%)在与n_jobs=-1一起运行时(如果您将n_jobs指定为-1,它将使用all )。此外,您还可以根据他使用scikit的测试-在Linux下学习0.20.3,查看@kenlukas answer。
更新:实现所有问题Unintended multithreading in Python (scikit-learn)的场景,请查看答案
如果您希望动态地设置线程数,而不是通过环境变量全局设置线程数,如下所示:
import mkl
mkl.set_num_threads(2)https://stackoverflow.com/questions/59553393
复制相似问题