分布式多进程.Pool#
Ray 支持使用 Ray Actors 而不是本地进程来运行分布式 Python 程序,使用 multiprocessing.Pool API。这使得将使用 multiprocessing.Pool
的现有应用程序从单个节点扩展到集群变得容易。
快速入门#
要开始使用,首先 安装 Ray ,然后使用 ray.util.multiprocessing.Pool
代替 multiprocessing.Pool
。这将在你第一次创建 Pool
时启动一个本地 Ray 集群,并将你的任务分布到该集群上。请参阅下面的 在集群上运行 部分,了解如何在多节点 Ray 集群上运行的说明。
from ray.util.multiprocessing import Pool
def f(index):
return index
pool = Pool()
for result in pool.map(f, range(100)):
print(result)
目前完全支持 multiprocessing.Pool
API。详情请参阅 multiprocessing 文档。
警告
在使用 Ray 时,Pool
构造函数中的 context
参数将被忽略。
在集群上运行#
本节假设您已经有一个正在运行的 Ray 集群。要启动 Ray 集群,请参阅 集群设置 说明。
要将 Pool
连接到一个正在运行的 Ray 集群,你可以通过以下两种方式之一指定头节点的地址:
通过设置
RAY_ADDRESS
环境变量。通过将
ray_address
关键字参数传递给Pool
构造函数。
from ray.util.multiprocessing import Pool
# Starts a new local Ray cluster.
pool = Pool()
# Connects to a running Ray cluster, with the current node as the head node.
# Alternatively, set the environment variable RAY_ADDRESS="auto".
pool = Pool(ray_address="auto")
# Connects to a running Ray cluster, with a remote node as the head node.
# Alternatively, set the environment variable RAY_ADDRESS="<ip_address>:<port>".
pool = Pool(ray_address="<ip_address>:<port>")
你也可以通过在创建 Pool
之前调用 ray.init()
(使用其任何支持的配置选项)来手动启动 Ray。