Linux 当我从scikit learn导入内容时,我有大量的上下文切换
我们正在使用scikit学习查找类似的图像簇。我们希望有一个内部API,但当我们从scikit导入对象或使用它时,我们会得到大量的上下文切换 这些导入中的任何一个都会产生大量的导入:Linux 当我从scikit learn导入内容时,我有大量的上下文切换,linux,docker,scikit-learn,nomad,Linux,Docker,Scikit Learn,Nomad,我们正在使用scikit学习查找类似的图像簇。我们希望有一个内部API,但当我们从scikit导入对象或使用它时,我们会得到大量的上下文切换 这些导入中的任何一个都会产生大量的导入: from sklearn.neighbors import NearestNeighbors from sklearn.externals.joblib import load from sklearn.decomposition import PCA from sklearn.externals import j
from sklearn.neighbors import NearestNeighbors
from sklearn.externals.joblib import load
from sklearn.decomposition import PCA
from sklearn.externals import joblib
下面是重新启动程序期间的vmstat1
输出
我们在导入前后添加了一些睡眠,并将大量上下文切换关联到这些行
但是,当我们在处理3GB近邻对象中的数字时,我们看到上下文切换的数量大幅增加
您完全可以发现我们发送给API的3个查询
以下是增长的预期:
def reduce_dimensions(self, dataset):
return self.dim_obj.transform(dataset)
def get_closest_cluster(self, input_data):
indexs_with_distance = self.cluster_obj.radius_neighbors(X=input_data, radius=self.radious, return_distance=True)
return self.get_ordered_indexs(indexs_with_distance)
当我们在笔记本电脑上使用docker compose运行安装程序时,以及在nomad上使用docker运行安装程序时,都会发生这种情况。web应用程序由Flask编写,并由gunicorn提供
有没有办法告诉scikit使用这些上下文切换时要更加足智多谋
我们的管理员担心它会降低部署到相同节点的所有应用程序的性能
我们正在使用Python 3.6和scikit learn 0.19.1,尝试通过运行以下命令来限制进程可以使用的线程数:
OMP_NUM_THREADS=1 python run.py
请参见此处的完整说明: