def get_function_descriptor_for_actor_method( language: str, actor_creation_function_descriptor, method_name: str, signature: str): """Get function descriptor for cross language actor method call. Args: language: Target language. actor_creation_function_descriptor: The function signature for actor creation. method_name: The name of actor method. signature: The signature for the actor method. When calling Java from Python, it should be string in the form of "{length_of_args}". Returns: Function descriptor for cross language actor method call. """ if language == Language.JAVA: return JavaFunctionDescriptor( actor_creation_function_descriptor.class_name, method_name, signature, ) elif language == Language.CPP: return CppFunctionDescriptor( method_name, "PYTHON", actor_creation_function_descriptor.class_name, ) else: raise NotImplementedError("Cross language remote actor method " f"not support language {language}")
def cpp_function(function_name): """Define a Cpp function. Args: function_name (str): Cpp function name. """ from ray.remote_function import RemoteFunction return RemoteFunction( Language.CPP, lambda *args, **kwargs: None, CppFunctionDescriptor(function_name, "PYTHON"), None, # num_cpus, None, # num_gpus, None, # memory, None, # object_store_memory, None, # resources, None, # accelerator_type, None, # num_returns, None, # max_calls, None, # max_retries, None, # retry_exceptions, None, # runtime_env, None, # placement_group, None, ) # scheduling_strategy,
def cpp_function(function_name: str): """Define a Cpp function. Args: function_name: Cpp function name. """ from ray.remote_function import RemoteFunction return RemoteFunction( Language.CPP, lambda *args, **kwargs: None, CppFunctionDescriptor(function_name, "PYTHON"), {}, )
def cpp_actor_class(create_function_name: str, class_name: str): """Define a Cpp actor class. Args: create_function_name: Create cpp class function name. class_name: Cpp class name. """ from ray.actor import ActorClass print("create func=", create_function_name, "class_name=", class_name) return ActorClass._ray_from_function_descriptor( Language.CPP, CppFunctionDescriptor(create_function_name, "PYTHON", class_name), {}, )
def cpp_actor_class(create_function_name, class_name): """Define a Cpp actor class. Args: create_function_name (str): Create cpp class function name. class_name (str): Cpp class name. """ from ray.actor import ActorClass print("create func=", create_function_name, "class_name=", class_name) return ActorClass._ray_from_function_descriptor( Language.CPP, CppFunctionDescriptor(create_function_name, "PYTHON", class_name), max_restarts=0, max_task_retries=0, num_cpus=None, num_gpus=None, memory=None, object_store_memory=None, resources=None, accelerator_type=None, runtime_env=None, )