code: def parse_args(self, parser, argv, environ=None):
      environ = environ or os.environ
      args = super().parse_args(parser, argv, environ=environ)
  
      if (
          self.config.get("cluster", {}).get("backend", "fixed")
          == "fixed"
          and not args.supervisors
      ):  # pragma: no cover
          raise ValueError(
              "--supervisors is needed to start Mars Worker"
          )
  
      if args.endpoint is None:
          args.endpoint = f"{args.host}:{get_next_port()}"
      self.n_io_process = int(args.n_io_process)
  
      n_cpu = cpu_count() if args.n_cpu == "auto" else int(args.n_cpu)
      mem_bytes = (
          mem_total()
          if args.mem_bytes == "auto"
          else int(args.mem_bytes)
      )
  
      if "CUDA_VISIBLE_DEVICES" in os.environ:  # pragma: no cover
          args.cuda_devices = os.environ["CUDA_VISIBLE_DEVICES"].strip()
  
      if args.cuda_devices == "auto":
          self.cuda_devices = list(range(cuda_count()))
      elif args.cuda_devices.strip() == "":  # pragma: no cover
          # allow using CPU only
          self.cuda_devices = []
      else:  # pragma: no cover
          self.cuda_devices = [
              int(i) for i in args.cuda_devices.split(",")
          ]
  
      self.band_to_resource = band_to_resource = dict()
      band_to_resource["numa-0"] = Resource(
          num_cpus=n_cpu, mem_bytes=mem_bytes
      )
      for i in self.cuda_devices:  # pragma: no cover
          band_to_resource[f"gpu-{i}"] = Resource(num_gpus=1)
  
      storage_config = self.config["storage"] = self.config.get(
          "storage", {}
      )
      backends = storage_config["backends"] = storage_config.get(
          "backends", []
      )
      plasma_config = storage_config["plasma"] = storage_config.get(
          "plasma", {}
      )
      disk_config = storage_config["disk"] = storage_config.get(
          "disk", {}
      )
      if "MARS_CACHE_MEM_SIZE" in environ:
          plasma_config["store_memory"] = environ["MARS_CACHE_MEM_SIZE"]
      if "MARS_PLASMA_DIRS" in environ:
          plasma_config["plasma_directory"] = environ[
              "MARS_PLASMA_DIRS"
          ]
      if "MARS_SPILL_DIRS" in environ:
          backends.append("disk")
          disk_config["root_dirs"] = environ["MARS_SPILL_DIRS"]
  
      return args
  
file_path: mars/mars/deploy/oscar/worker.py
imports: import os
  from ...resource import cpu_count, cuda_count, mem_total, Resource
  from ...services import NodeRole
  from ...utils import get_next_port
  from .cmdline import OscarCommandRunner
  from .local import start_worker, stop_worker
  from .pool import create_worker_actor_pool
label_desc: Use image node_id 3 for calling the WorkerCommandRunner obj's underlying member method code with example usage: obj.parse_args(parser, argv, environ) and returns: args