串口转并口到多机
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
对象,这些对象具有阻塞、非阻塞迭代和异步 map
和 pipe
方法。 pyina
将此 API 扩展到 MPI
以及 torque
和 slurm
等调度程序。通常,您可以嵌套这些结构,以便拥有异构和分层的并行分布式计算。
您根本不需要修改代码即可使用 pathos
(和 pyina
)。
SO 上有几个这样的例子,包括:
Python Multiprocessing with Distributed Cluster Using Pathos 和
Python Multiprocessing with Distributed Cluster
以及 pathos
、pyina
和 mystic
中的 examples
目录 - 可在此处找到:
https://github.com/uqfoundation
我连续运行了以下代码来请求一堆网址:
# 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
对象,这些对象具有阻塞、非阻塞迭代和异步 map
和 pipe
方法。 pyina
将此 API 扩展到 MPI
以及 torque
和 slurm
等调度程序。通常,您可以嵌套这些结构,以便拥有异构和分层的并行分布式计算。
您根本不需要修改代码即可使用 pathos
(和 pyina
)。
SO 上有几个这样的例子,包括: Python Multiprocessing with Distributed Cluster Using Pathos 和 Python Multiprocessing with Distributed Cluster
以及 pathos
、pyina
和 mystic
中的 examples
目录 - 可在此处找到:
https://github.com/uqfoundation