Scikit-learn释放Python GIL吗?
我想在不同的线程中训练多个单类支持向量机(SVM)。有没有人知道scikit的SVM是否会释放全局解释器锁(GIL)?我在网上没有找到相关的答案。
谢谢
2 个回答
4
一些sklearn库中的Cython类在性能关键的部分会释放全局解释器锁(GIL),比如决策树(例如在随机森林中使用的决策树),从0.15版本开始(预计在2014年初发布),还有libsvm的包装类也是这样。
不过,这并不是普遍的规则。如果你发现sklearn中有性能关键的Cython代码可以改进以释放GIL,欢迎你提交一个请求来进行修改。
5
不,scikit-learn 并没有对全局解释器锁(GIL)做什么特别的处理。它其实是用 joblib 来实现并行处理的,也就是说,它会启动多个进程来完成工作。你可以通过自定义 joblib 的 Parallel
结构来实现你想要的效果。
如果你打算在同一个数据集上训练多个分类器,并且想用不同的设置来找到最佳的分类器,可以考虑使用 GridSearchCV
类,它会为你处理并行的部分。