Spaces:
Running
Running
from typing import Callable, Optional | |
from mlagents_envs.communicator_objects.unity_output_pb2 import UnityOutputProto | |
from mlagents_envs.communicator_objects.unity_input_pb2 import UnityInputProto | |
# Function to call while waiting for a connection timeout. | |
# This should raise an exception if it needs to break from waiting for the timeout. | |
PollCallback = Callable[[], None] | |
class Communicator: | |
def __init__(self, worker_id=0, base_port=5005): | |
""" | |
Python side of the communication. Must be used in pair with the right Unity Communicator equivalent. | |
:int worker_id: Offset from base_port. Used for training multiple environments simultaneously. | |
:int base_port: Baseline port number to connect to Unity environment over. worker_id increments over this. | |
""" | |
def initialize( | |
self, inputs: UnityInputProto, poll_callback: Optional[PollCallback] = None | |
) -> UnityOutputProto: | |
""" | |
Used to exchange initialization parameters between Python and the Environment | |
:param inputs: The initialization input that will be sent to the environment. | |
:param poll_callback: Optional callback to be used while polling the connection. | |
:return: UnityOutput: The initialization output sent by Unity | |
""" | |
def exchange( | |
self, inputs: UnityInputProto, poll_callback: Optional[PollCallback] = None | |
) -> Optional[UnityOutputProto]: | |
""" | |
Used to send an input and receive an output from the Environment | |
:param inputs: The UnityInput that needs to be sent the Environment | |
:param poll_callback: Optional callback to be used while polling the connection. | |
:return: The UnityOutputs generated by the Environment | |
""" | |
def close(self): | |
""" | |
Sends a shutdown signal to the unity environment, and closes the connection. | |
""" | |