docstr: Process Launcher
  Based on the JoblibLauncher, but uses processes to scatter jobs in a multiplexed manner across
  some number of GPUs on a single machine.
docstr_tok: ["Process","Launcher","Based","on","the","JoblibLauncher",",","but","uses","processes","to","scatter","jobs","in","a","multiplexed","manner","across","some","number","of","GPUs","on","a","single","machine","."]
code: def __init__(self, **kwargs: Any) -> None:
      """Process Launcher
      Based on the JoblibLauncher, but uses processes to scatter jobs in a multiplexed manner across
      some number of GPUs on a single machine.
      """
      self.config: Optional[DictConfig] = None
      self.task_function: Optional[TaskFunction] = None
      self.hydra_context: Optional[HydraContext] = None
  
      self.runner = kwargs
  
imports: import copy
  import hashlib
  import os
  import subprocess
  import sys
  import threading
  import time
  from dataclasses import dataclass
  from pathlib import Path
  from typing import Any, Dict, Optional, Sequence
  import torch
  from hydra.core.config_store import ConfigStore
  from hydra.core.hydra_config import HydraConfig
  from hydra.core.plugins import Plugins
  from hydra.core.singleton import Singleton
  from hydra.core.utils import JobReturn, JobStatus, configure_log, filter_overrides, setup_globals
  from hydra.plugins.launcher import Launcher
  from hydra.types import HydraContext, TaskFunction
  from omegaconf import DictConfig, OmegaConf, open_dict
  from nemo.utils import logging
label_desc: Use image node_id 1 to create a new ProcessLauncher object from inherited base classes: Launcher with example: obj = ProcessLauncher()