多处理或并行计算 Python 代码

数据挖掘 Python 大数据
2022-03-04 06:36:03

我正在研究生物信息学大数据集;训练集和优化需要大量时间来执行。我检查并发现在一个 cpu 核心上进行训练和优化编译,因此需要大量时间。

我试图寻找多处理或并行计算代码,但我没有得到任何好的相关示例来在我的脚本上执行代码。我是多处理的新手,任何人都可以分享 Python 中的多处理或并行计算代码。

2个回答

如果您使用的是 scikit-learn,那么对于大多数学习者来说,有一个名为 n_jobs 的参数。可以将此参数设置为 -1 以利用所有处理器。有关更多详细信息,请参阅关于 CPU 使用率和内存的 scikit-learn n_jobs 参数

你如何做到这一点在很大程度上取决于你已经在使用的工具和你的模型训练的方式。如果您正在迭代例如要搜索的参数网格,则并行化可能很简单。其他设置可能非常困难。

有一些使用 Python 的通用方法:查看相关文档

要注意的一件事是,您确实必须使用多个进程才能在 Python 中获得真正的并行性。在 python 中使用线程并不能加快实际计算的速度。线程通常仅在您认为您将等待响应的情况下有用,例如在网络/Web 编程中(类似于 Python 中的异步编程)。

在你的情况下,做生物信息学,我会首先检查没有框架已经为你做并行处理。也许你可以使用:

  • 典型的深度学习框架,如TensorflowPyTorch,它们在 CPU 上并行执行许多操作,还提供 GPU 支持,速度更快。您可以从所有这些使用 Tensorflow 的示例中看到,您可以创建许多模型,而不仅仅是神经网络。
  • 还有其他通用框架,例如Ray,它们试图为您抽象出困难的部分。这是该工具的介绍教程
  • Sci-Kit Learn 的工具,其中一些具有添加更多工作人员的选项,或者可以与joblib一起使用。