reinforcex 0.0.4

Deep Reinforcement Learning Framework
from concurrent.futures import ThreadPoolExecutor

import requests


def run_episode(server_idx):
    res = requests.post(
        f"http://localhost:800{server_idx}/reset",
        json={"env": "CartPole-v1"},
    )
    data = res.json()
    session_id = data["session_id"]
    obs = data["observation"]
    print(f"Reset: {data}")
    res = requests.post(
        f"http://localhost:800{server_idx}/step",
        json={"session_id": session_id, "action": 0},
    )
    result = res.json()
    print(f"Step: {result}")

    return result


if __name__ == "__main__":
    num_threads = 10

    with ThreadPoolExecutor(max_workers=num_threads) as executor:
        futures = [
            executor.submit(run_episode, server_idx=i + 1) for i in range(num_threads)
        ]
        for future in futures:
            try:
                result = future.result()
            except Exception as e:
                print(f"Error in thread: {e}")