jupyter 中报告的 n_jobs=1 和 CPU 用法之间存在差异

Discrepancy between reported n_jobs=1 and CPU-usage in jupyter

我 运行 在 KneighborsClassifier 上设置 GridSearchCV 并将 n_jobs 超参数设置为 -1 ,因此我所有的 CPU 都用于网格搜索。所以直觉上我认为应该有 8 种不同的超参数组合 运行 并行。

在 运行 在 ubuntu 上使用 htop 期间,我可以看到我的所有 8 个 CPU 都被 python 使用了 99%,所以看起来正如预期的那样。 但是 jupyter 在 运行

期间输出
[Parallel(n_jobs=1)]: Using backend SequentialBackend with 1 concurrent workers.

从代码输出中我可以看出,似乎所有内容都是串行执行的而不是并行执行的。

那么这里到底发生了什么?

编辑:代码

from sklearn.model_selection import GridSearchCV
param_grid_knn=[
    {
        'weights' : ['uniform','distance'],
        'n_jobs' : [-1],
        'n_neighbors' : [3,5,7],
        'p' :[1,2]
    }
]

knn = KNeighborsClassifier()
grid_search = GridSearchCV(knn,param_grid_knn,cv=5,scoring='accuracy',return_train_score=True,verbose=2,refit=True)
grid_search.fit(train_data,train_labels)

我找到了答案,n_jobs=1指的是GridSearchCV使用的n_jobs,默认情况下是1,因为我没有在它的函数调用中指定它。