code: def _create_workers(self):
      workers_config = self._worker_config_cls(
          self._worker_num,
          image=self._image,
          cpu=self._worker_cpu,
          memory=self._worker_mem,
          memory_limit_ratio=self._worker_mem_limit_ratio,
          spill_volumes=self._worker_spill_paths,
          modules=self._worker_extra_modules,
          volumes=self._extra_volumes,
          worker_cache_mem=self._worker_cache_mem,
          min_cache_mem=self._worker_min_cache_men,
          service_name=self._service_name,
          service_port=self._worker_service_port,
          pre_stop_command=self._pre_stop_command,
          supervisor_web_port=self._web_port,
      )
      workers_config.add_simple_envs(self._worker_extra_env)
      workers_config.add_labels(self._worker_extra_labels)
      workers_config.create_namespaced(
          self._api_client, self._namespace
      )
  
imports: import asyncio
  import functools
  import logging
  import random
  import time
  import uuid
  from urllib.parse import urlparse
  from ...lib.aio import new_isolation, stop_isolation
  from ...services.cluster.api import WebClusterAPI
  from ...session import new_session
  from ...utils import calc_size_by_str
  from ..utils import wait_services_ready
  from .config import NamespaceConfig, RoleConfig, RoleBindingConfig, ServiceConfig, MarsSupervisorsConfig, MarsWorkersConfig
label_desc: Use image node_id 9 for calling the KubernetesCluster obj's underlying member method code with example usage: obj._create_workers() without return types