Python 并行运行openai gym环境

Python 并行运行openai gym环境,python,parallel-processing,openai-gym,ray,Python,Parallel Processing,Openai Gym,Ray,以下代码摘自 当我阅读这段代码时,我感到非常困惑。这段代码真的是并行运行的吗?根据我的理解,只有一个env,因此上述代码应按顺序执行操作,即逐个执行操作。如果是这样的话,做上述事情有什么意义 你是对的,只有一个模拟器演员。步骤方法在actor上被调用四次。这将创建四个任务,参与者将连续执行这些任务 如果应用程序就是这么做的,那么创建一个常规Python对象并调用一个方法四次没有任何优势。但是,这种方法为您提供了创建两个Simulator参与者并并行调用其方法的选项。例如,您可以编写以下内容 #

以下代码摘自


当我阅读这段代码时,我感到非常困惑。这段代码真的是并行运行的吗?根据我的理解,只有一个
env
,因此上述代码应按顺序执行操作,即逐个执行操作。如果是这样的话,做上述事情有什么意义

你是对的,只有一个
模拟器
演员。
步骤
方法在actor上被调用四次。这将创建四个任务,参与者将连续执行这些任务

如果应用程序就是这么做的,那么创建一个常规Python对象并调用一个方法四次没有任何优势。但是,这种方法为您提供了创建两个
Simulator
参与者并并行调用其方法的选项。例如,您可以编写以下内容

# This assumes you've already called "import ray", "import gym",
# "ray.init()", and defined the Simulator class from the original
# post.

# Create two simulators.
simulator1 = Simulator.remote()
simulator2 = Simulator.remote()

# Step each of them four times.
observation_ids1 = []
observation_ids2 = []
for _ in range(4):
    observation_ids1.append(simulator1.step.remote(0))
    observation_ids2.append(simulator2.step.remote(0))

# Get the results.
observations1 = ray.get(observation_ids1)
observations2 = ray.get(observation_ids2)
在本例中,每个模拟器串行执行四个任务,但两个模拟器并行工作。您可以通过将
time.sleep(1)
语句放入
step
方法中并计时整个计算所需的时间来说明这一点

# This assumes you've already called "import ray", "import gym",
# "ray.init()", and defined the Simulator class from the original
# post.

# Create two simulators.
simulator1 = Simulator.remote()
simulator2 = Simulator.remote()

# Step each of them four times.
observation_ids1 = []
observation_ids2 = []
for _ in range(4):
    observation_ids1.append(simulator1.step.remote(0))
    observation_ids2.append(simulator2.step.remote(0))

# Get the results.
observations1 = ray.get(observation_ids1)
observations2 = ray.get(observation_ids2)