使用Python和实例方法进行多处理

2024-04-19 00:29:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用scikit-learn来训练一个带有一些“高级”参数的KernelDensity。当在初始拟合后评估score_samples时,处理需要很长时间,而且有多个可用的内核,我希望能得到一些速度上的改进。score_samples(取样本向量的任意长度)应该很容易并行化。在

直到现在,我一直在努力让事情正常运转。如果我运行我的脚本(我使用的是Pool.map()),我会得到一个错误:实例方法不可pickle。在

这很明显,但是使用sklearn并严重依赖实例方法,我无法改变这种行为。在

有没有任何方法可以使用sklearn(和实例方法)进行任何类型的多处理?我不介意python是复制属于主进程的整个内存(这是可管理的),还是需要从主程序将每个块提交给score_samples(不优雅,但可以完成任务)。在

有什么建议我应该去哪里看看?在


Tags: 实例方法脚本参数sklearnscikit事情内核
1条回答
网友
1楼 · 发布于 2024-04-19 00:29:15

我只是猜测您需要存储线程特定的状态,这就是为什么您要创建一个处理池。我不确定这是否适用于scikit,但我会使用线程.local(). 听起来您对Python相当熟悉,但是这里有一个链接https://docs.python.org/3/library/threading.html#thread-local-data,如果它有帮助的话。在

我看了一眼sci工具包和那里的医生。你试过使用joblib吗/joblib.parallel?在

相关问题 更多 >