串口转并口到多机

Converting serial to parallel to multi-machine

我连续运行了以下代码来请求一堆网址:

# takes 5 hours
data = []
for url in urls:
    data.append(request_url(url))

然后我将其转换为使用多处理并行运行:

# takes 50 minutes
p = Pool(20)
data = p.map(request_url, urls)

如果我想提高这方面的速度,我该如何将这个过程分散到多个服务器上,这样做的好方法是什么?

您可以使用 pathos(以及它的姊妹包 pyina)来帮助您准确了解您希望如何并行分发代码。

pathos 为跨线程、多处理和套接字的并行处理提供统一的 API。 API 提供 Pool 对象,这些对象具有阻塞、非阻塞迭代和异步 mappipe 方法。 pyina 将此 API 扩展到 MPI 以及 torqueslurm 等调度程序。通常,您可以嵌套这些结构,以便拥有异构和分层的并行分布式计算。

您根本不需要修改代码即可使用 pathos(和 pyina)。

SO 上有几个这样的例子,包括: Python Multiprocessing with Distributed Cluster Using PathosPython Multiprocessing with Distributed Cluster

以及 pathospyinamystic 中的 examples 目录 - 可在此处找到: https://github.com/uqfoundation