多处理支持的并行循环不能嵌套在线程下面

Ale*_*lex 12 python-multithreading scikit-learn joblib

joblib中出现此类问题的原因是什么?'多处理支持的并行循环不能嵌套在线程下面,设置n_jobs = 1'我该怎么做才能避免这样的问题?

实际上我需要实现在后台线程中运行大量计算的XMLRPC服务器,并通过从UI客户端轮询来报告当前进度.它使用基于joblib的scikit-learn.

PS:我只是简单地将线程的名称更改为"MainThread"以避免此类警告,并且一切看起来都很好(并行运行并没有问题).这种解决方法将来可能会出现什么问题?

Cha*_*mot 7

我在一个线程中使用 sklearn 进行预测时遇到了同样的警告,使用我加载的模型并且它配备了 n_jobs > 1。当你腌制一个模型时,它会出现它的参数,包括 n_jobs。

为避免警告(和潜在的序列化成本),请在酸洗模型时将 n_jobs 设置为 1:

clf = joblib.load(model_filename).set_params(n_jobs=1)
Run Code Online (Sandbox Code Playgroud)


sil*_*ser 1

这似乎是由于 JobLib 库中的这个问题造成的。在撰写本文时,此问题似乎已修复但尚未发布。正如问题中所写,脏修复会将主线程重命名回MainThread

threading.current_thread().name = 'MainThread'