KMeans跑满CPU

问题描述

在调用sklearn.cluster中的KMeans时,cpu占用达100%,比如40核的cpu,最高4000%的cpu占用率

尝试解决方案

scikit-learn版本为0.24.2

from sklearn.cluster import KMeans
kmeans = KMeans(n_clusters=k, random_state=123)
kmeans.fit(self.embeddings)
cluster_centers = kmeans.cluster_centers_
labels = kmeans.labels_

scikit-learn在0.23版本时会有n_jobs参数可以设置线程数,但是在降低版本之后,设置n_jobs参数依然会跑满cpu。下图是官方文档对n_jobs的解读。

考虑到之后高版本不会再使用n_jobs参数,所以未深究其中原因。

最终解决方案

在启动服务时设置线程数量可以解决该问题,如果设置为4个线程

OMP_NUM_THREADS=4 python run.py

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注