我想在不同的线程中训练多个类的svms。 有没有人知道scikits.learn.svm是否释放GIL? 我在谷歌上没有找到任何答案。 谢谢Scikits学会释放python GIL吗?
2
A
回答
3
不,scikit学习不玩GIL的任何技巧。相反,它使用joblib来表示它的所有并行性,它产生了多个进程来完成它的工作。您可以使用自定义joblib Parallel
构造实现您想要的效果。
如果您打算在具有不同设置的相同数据集上训练多个分类器以找到最佳分类器,请考虑使用GridSearchCV
类,它为您处理并行性。
2
一些sklearn Cython类在性能关键部分内部释放GIL,例如0.15(2014年初发布)和libsvm包装器所做的决策树(例如在随机森林中使用)。
虽然这不是一般规则。如果您确定sklearn中可以更改为释放GIL的性能关键的cython代码,请随时发送pull请求。
相关问题
- 1. 在C++代码中释放Python GIL
- 2. 在Cython中释放GIL的危险?
- 3. zlib模块是否在Python 3中释放全局解释器锁(GIL)?
- 4. 摧毁一个子解释器后释放GIL
- 5. python不会释放元组的内存,会吗?
- 6. 在scikits机器学习中缺少值
- 7. python scikits学习 - 支持向量机选项
- 8. python scikits学习 - 分离超平面方程
- 9. 双释放会导致崩溃吗?
- 10. 会调用release释放autorelease对象吗?
- 11. Python MySQLdb不会释放表锁
- 12. Python GIL和全局变量
- 13. Python GIL和多线程
- 14. Python GIL:是django save()阻塞?
- 15. file.read()多和GIL
- 16. 什么是全局解释器锁(GIL)?
- 17. Python释放线程
- 18. scikits statsmodels - ImportError
- 19. 是关于GIL的python dict的len()原子吗?
- 20. 运行单独的python进程避免GIL吗?
- 21. 它需要释放AVCaptureVideoPreviewLayer吗?
- 22. 我需要释放CFError吗?
- 23. 我应该释放self.view吗?
- 24. 我应该释放NSImage吗?
- 25. 你需要释放NSData吗?
- 26. 何时会释放内存?
- 27. 释放会话变量
- 28. 锁不会被释放
- 29. Scikits学习:使用自定义的词汇连同管道
- 30. Scikits学习:线性内核SVM中的特征权重
感谢您的意见,不幸的是,这个问题实际上并没有解决,因为我需要依赖外部库来实现使用不同线程的并行机制(用于与更大应用程序的其他部分兼容)。因此,我想为svm找到一个替代库来释放GIL ..或者欺骗scikits.learn来做到这一点。你可能有什么建议吗? –
您可能想在子流程中运行scikit-learn代码。它生成的分类器可以被酸洗,所以你可以很容易地在它们之间传输它们;唯一的问题是以有效的方式传输训练数据(可能通过文件系统?)。 –
另外,libsvm包装器是用[Cython](http://cython.org)编写的。我认为将封装器代码打包为[发布GIL]应该相当简单(http://docs.cython.org/src/userguide/external_C_code.html#acquiring-and-releasing-the-gil)。如果你这样做,并且它解决了你的问题,请在github上提交你的更改作为pull请求。 另请注意,scikit-learn估计器并不意味着线程安全:跨线程使用不相关的估计器实例。 – ogrisel