import gym@ray.remote classSimulator(object):def__init__(self):self.env = gym.make("Pong-v0")self.env.reset()defstep(self, action):return self.env.step(action)# Create a simulator, this will start a new worker that will run all # methods for this actor. simulator = Simulator.remote()observations = [] for _ in range(4):# Take action 0 in the simulator.observations.append(simulator.step.remote(0))
@ray.remote deff():time.sleep(np.random.uniform(0, 5))# Launch 10 tasks with variable durations. results = [f.remote() for _ in range(10)]# Wait until either five tasks have completed or two seconds have passed and # return a list of the object IDs whose tasks have finished. ready_ids, remaining_ids = ray.wait(results, num_returns=5, timeout=2000)
# Launch 10 tasks withvariable durations. remaining_ids = [f.remote() for _ inrange(10)]# Process the tasks in the order that they complete. results = [] while len(remaining_ids) > 0:ready_ids, remaining_ids = ray.wait(remaining_ids, num_returns=1)results.append(ray.get(ready_ids[0]))
# Serialize the weights and copy them into the object store. Then deserialize # them. weights_id = ray.put(weights) # 0.525s new_weights = ray.get(weights_id) # 0.000622s