class_docstr: A DDP Strategy which uses ray as backend.
class_docstr_tok: ["A","DDP","Strategy","which","uses","ray","as","backend","."]
docstr: Creates Ray actor.
docstr_tok: ["Creates","Ray","actor","."]
code: def _create_worker(self):
      """Creates Ray actor."""
      from bigdl.nano.utils.common import schedule_processors
  
      envs = schedule_processors(self.num_workers)
  
      workers = []
      for i in range(self.num_workers):
          worker = RayExecutor.options(
              num_cpus=self.num_cpus_per_worker,
              num_gpus=int(self.use_gpu),
          ).remote()
  
          ray.get(
              worker.set_env_var.remote(
                  "KMP_AFFINITY", envs[i]["KMP_AFFINITY"]
              )
          )
          ray.get(
              worker.set_env_var.remote(
                  "OMP_NUM_THREADS", envs[i]["OMP_NUM_THREADS"]
              )
          )
          # pytest will set this environment variable to the path of `nano` directory,
          # and subprocess will use it to initialize its `sys.path`,
          # so we can import `test` module in subprocess
          ray.get(
              worker.set_env_var.remote(
                  "PYTHONPATH", envs[i].get("PYTHONPATH", "")
              )
          )
  
          workers.append(worker)
  
      return workers
  
imports: import os
  import warnings
  from typing import Callable, Dict, List, Union, Any, Optional
  from collections import defaultdict
  import ray
  from ray.util.ml_utils.util import find_free_port
  import torch
  from torch.optim.lr_scheduler import _LRScheduler
  from torch.nn.parallel.distributed import DistributedDataParallel
  import pytorch_lightning
  from pytorch_lightning.core.datamodule import LightningDataModule
  from pytorch_lightning.trainer.states import TrainerFn
  from pytorch_lightning.utilities import rank_zero_only
  from pytorch_lightning.utilities.apply_func import move_data_to_device
  from pytorch_lightning.strategies.launchers import _SpawnLauncher
  from pytorch_lightning.strategies import DDPSpawnStrategy
  from pytorch_lightning.core.optimizer import _configure_schedulers_automatic_opt
  from pytorch_lightning.core.optimizer import _configure_schedulers_manual_opt
  from pytorch_lightning.core.optimizer import _set_scheduler_opt_idx, _validate_scheduler_api
  from pytorch_lightning.core.optimizer import LightningOptimizer
  from .ray_envbase import RayEnvironment
  from bigdl.nano.utils.common import invalidInputError
  from bigdl.nano.utils.pytorch import TORCH_VERSION_LESS_1_12
  from bigdl.nano.deps.ipex.ipex_api import ipex_optimize
  from bigdl.nano.pytorch.dispatcher import _get_patch_status
label_desc: Use image node_id 3 for calling the RayStrategy obj's underlying member method code with example usage: obj._create_worker() and returns: workers