(
command_queue: mp.Queue,
result_queue: mp.Queue,
startup_queue: mp.Queue,
player_name: str,
agent_name: str,
path: str,
)
| 80 | |
| 81 | |
| 82 | def policy_worker( |
| 83 | command_queue: mp.Queue, |
| 84 | result_queue: mp.Queue, |
| 85 | startup_queue: mp.Queue, |
| 86 | player_name: str, |
| 87 | agent_name: str, |
| 88 | path: str, |
| 89 | ) -> None: |
| 90 | try: |
| 91 | module = load_policy_module(player_name, path) |
| 92 | except BaseException as exc: |
| 93 | startup_queue.put( |
| 94 | { |
| 95 | "error": f"{type(exc).__name__}: {exc}", |
| 96 | "traceback": traceback.format_exc(limit=5), |
| 97 | } |
| 98 | ) |
| 99 | return |
| 100 | startup_queue.put({"ready": True}) |
| 101 | |
| 102 | while True: |
| 103 | try: |
| 104 | request = command_queue.get() |
| 105 | except (EOFError, KeyboardInterrupt): |
| 106 | return |
| 107 | if request is None: |
| 108 | return |
| 109 | request_id = request["request_id"] |
| 110 | try: |
| 111 | action = module.decide(request["observation"], request["action_space"]) |
| 112 | result_queue.put({"request_id": request_id, "action": action}) |
| 113 | except BaseException as exc: |
| 114 | result_queue.put( |
| 115 | { |
| 116 | "request_id": request_id, |
| 117 | "error": f"{type(exc).__name__}: {exc}", |
| 118 | "traceback": traceback.format_exc(limit=5), |
| 119 | } |
| 120 | ) |
| 121 | |
| 122 | |
| 123 | class PolicyController: |
nothing calls this directly
no test coverage detected