Scikit learn 支持多处理的并行循环不能嵌套在线程下面
joblib中出现此类问题的原因是什么? '多处理支持的并行循环不能嵌套在线程下面,设置n_jobs=1' 我应该怎么做来避免这样的问题 实际上,我需要实现XMLRPC服务器,它在后台线程中运行大量计算,并通过UI客户端的轮询报告当前进度。它使用基于joblib的scikit learn 附言:Scikit learn 支持多处理的并行循环不能嵌套在线程下面,scikit-learn,python-multithreading,joblib,Scikit Learn,Python Multithreading,Joblib,joblib中出现此类问题的原因是什么? '多处理支持的并行循环不能嵌套在线程下面,设置n_jobs=1' 我应该怎么做来避免这样的问题 实际上,我需要实现XMLRPC服务器,它在后台线程中运行大量计算,并通过UI客户端的轮询报告当前进度。它使用基于joblib的scikit learn 附言: 我只是简单地将线程的名称改为“MainThread”,以避免此类警告,而且一切看起来都很正常(按预期并行运行,不会出现问题)。这种解决方法将来可能会出现什么问题?这似乎是由于JobLib库中的问题。在写
我只是简单地将线程的名称改为“MainThread”,以避免此类警告,而且一切看起来都很正常(按预期并行运行,不会出现问题)。这种解决方法将来可能会出现什么问题?这似乎是由于JobLib库中的问题。在写这篇文章的时候,这似乎是固定的,但尚未发布。如问题中所述,脏修复程序需要将主线程重新命名为
MainThread
:
threading.current_thread().name='MainThread'
我在线程内使用sklearn进行预测时遇到了相同的警告,使用的是我加载的模型,该模型安装了n_jobs>1。当您对模型进行pickle处理时,它会出现,该模型将与其参数(包括n_作业)一起保存
为避免警告(以及潜在的序列化成本),请在酸洗模型时将n_jobs设置为1:
clf = joblib.load(model_filename).set_params(n_jobs=1)
据我所知,问题是你的一个线程产生了另一个多线程计算。一、 就个人而言,你不认为有必要这样做(是的,你可以使用复杂的fork模型,但是为什么你要使用并行循环呢?),因为你可能已经在利用你所有的并行性了。你把这个叫做什么?这对我没有影响。@Cerin就在我初始化并安装分类器之前。这对我也没有影响。我刚刚注意到,在升级了一些LIB之后,这个问题又开始出现了。看起来行为改变了。