线程 QueueManagerThread 中的异常 - scikit-learn

Posted

技术标签:

【中文标题】线程 QueueManagerThread 中的异常 - scikit-learn【英文标题】:Exception in thread QueueManagerThread - scikit-learn 【发布时间】:2019-07-21 04:21:47 【问题描述】:

当我设置 n_jobs=-1 我得到错误,如果我设置 n_jobs 等于 big value (n_jobs=100),但如果设置较小的值(例如 n_jobs= 32),它工作正常。我试过 reinstall scikit-learn 和 joblib 包,但无济于事。另外,它 (n_jobs=-1) 之前运行良好,但突然出错。

from sklearn import datasets
from sklearn.model_selection import cross_validate, StratifiedKFold
from sklearn.linear_model import RidgeClassifier

iris = datasets.load_iris()
iris_X = iris.data
iris_y = iris.target

skf = StratifiedKFold(n_splits=5, random_state=0, shuffle=True)
scoring = 'accuracy': 'accuracy'

model_ridge = RidgeClassifier(random_state=0)
scores = cross_validate(estimator=model_ridge, 
                            X=iris_X,
                            y=iris_y,
                            scoring=scoring,
                            cv=skf.split(iris_X, iris_y),
                            n_jobs=-1)

线程 QueueManagerThread 中的异常:

Traceback(最近一次调用最后一次): _bootstrap_inner 中的文件“C:\ProgramData\Anaconda3\envs\py36\lib\threading.py”,第 916 行 self.run()

文件“C:\ProgramData\Anaconda3\envs\py36\lib\threading.py”,第 864 行,运行中 self._target(*self._args, **self._kwargs)

文件“C:\ProgramData\Anaconda3\envs\py36\lib\site-packages\sklearn\externals\joblib\externals\loky\process_executor.py”,第 615 行,在 _queue_management_worker 准备好 = 等待(读者 + worker_sentinels)

文件“C:\ProgramData\Anaconda3\envs\py36\lib\multiprocessing\connection.py”,第 859 行,等待中 ready_handles = _exhaustive_wait(waithandle_to_obj.keys(), timeout)

文件“C:\ProgramData\Anaconda3\envs\py36\lib\multiprocessing\connection.py”,第 791 行,_exhaustive_wait res = _winapi.WaitForMultipleObjects(L, False, timeout)

ValueError: 最多需要 63 个句柄,得到一个长度为 65 的序列

【问题讨论】:

这个问题来自joblib/loky。我在 github 上创建了issue。 【参考方案1】:

听起来您在那里运行了很多内核!设置 n_jobs=60 这应该可以工作。在此处查看更多详细信息https://github.com/psf/black/issues/564

【讨论】:

这可能有效,但它不能解决这个问题,因为我想完全利用 cpu 电源。有了类似的成功,我根本不能使用并行计算。

以上是关于线程 QueueManagerThread 中的异常 - scikit-learn的主要内容,如果未能解决你的问题,请参考以下文章

swift中的异构集合文字

C++中异或的使用例题?

关于进程线程协程在python中的使用问题

正则表达式中的异或

汇编代码 - 循环中的异或如何工作? [复制]

模型数据库中的异构类型