我编写了一个python代码来执行遗传算法优化,但它太慢了。我想知道如何在并行模式下运行相同的多个CPU?
为了更清楚,我的代码将调用另一个python代码,比如100个一个接一个地调用,我想在4个CPU之间划分它。因此每个CPU解决了外部python代码的25倍。从而提高速度。 如果有人可以帮助我,我们非常感激吗?
提前致谢!
答案 0 :(得分:2)
有几个软件包为python2
提供并行计算。我是一个名为pathos
的软件包的作者,它提供了几个并行后端的并行计算,并为它们提供了一个通用的API。 pathos
为多进程,多线程,并行套接字,MPI并行以及与调度程序和ssh的交互提供并行管道和映射。 pathos
依赖于多个软件包,如果您不想要所有不同的选项,可以选择这些软件包。
pathos
使用:pyina
,后者又使用mpi4py
。 mpi4py
提供了对MPI的绑定,但是您无法通过python运行代码' ...您需要运行任何用于运行MPI的代码。 pyina
使您可以从普通python运行mpi4py
,并与调度程序进行交互。另外,pyina
使用dill
,它可以序列化大多数python对象,因此您更能够跨进程发送所需内容。
pathos
提供multiprocessing
的分叉,与dill
和pyina
配合得很好。使用两者可以使您能够进行分层并行竞争 - 例如启动MPI并行,然后生成多进程或多线程并行。
pathos
也使用ppft
,它是pp
(并行Python)的分支,它提供跨套接字的并行计算 - 这意味着您可以跨多个连接并行映射机等。
pathos
还有其他选择,例如IPython-parallel
。但是,使用MPI的能力是非常新的,我也不知道它有多么强大。它可能会或可能不会利用已经开发一段时间的IPython-cluster-helper
。请注意,IPython
不使用pp
,而是使用zmq
,IPython
如果您喜欢云内容,还可以提供与EC2
的连接。< / p>
以下是一些相关链接:
pathos
,'pyina
,dill
,ppft
:https://github.com/uqfoundation Ipython-cluster-helper
:https://github.com/roryk/ipython-cluster-helper IPython
:http://ipython.org/ipython-doc/dev/parallel/parallel_mpi.html