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



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

直到现在,我尝试multiprocessing让事情工作。如果我运行我的脚本(我使用Pool.map()),我得到一个实例方法是不可pickleable的错误。

这是很明显的,但是使用sklearn和严重依赖实例方法,我不能改变这种行为。

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

有什么建议吗?

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

我看了一下sci-kit和docs。你试过使用joblib/joblib.parallel吗?

相关内容

  • 没有找到相关文章

最新更新