code: def get_ip_port_actors(
      actors: List[ray.actor.ActorHandle],
  ) -> List[str]:
      # We need this wrapper to avoid deserialization issues with benchmark_util.py
  
      def get_ip_port():
          ip = ray.util.get_node_ip_address()
          with closing(
              socket.socket(socket.AF_INET, socket.SOCK_STREAM)
          ) as s:
              s.bind(("localhost", 0))
              s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
              port = s.getsockname()[1]
          return ip, port
  
      return run_fn_on_actors(actors=actors, fn=get_ip_port)
  
imports: import os
  import socket
  import subprocess
  from collections import defaultdict
  from contextlib import closing
  from pathlib import Path
  from ray.air.util.node import _force_on_node
  import ray
  from typing import Any, List, Dict, Union, Callable
label_desc: Use image node_id 9 for calling a global function with example usage: get_ip_port_actors(actors) and returns: run_fn_on_actors, ip,  port