class_docstr: Abstract class for implementing the strategy for launching worker instances within a RuntimeGroup.
  
  In order to implement a new concrete `WorkerLauncher` subclass you need to implement the start method. Please
  consider the comments of the start method because some internal variables need to be set in the concrete
  implementation.
  
  Moreover, the `setup_worker_ssh_tunnels()` method can be used to setup ssh tunnels so that all entities can talk to
  each other.
class_docstr_tok: ["Abstract","class","for","implementing","the","strategy","for","launching","worker","instances","within","a","RuntimeGroup",".","In","order","to","implement","a","new","concrete","`","WorkerLauncher","`","subclass","you","need","to","implement","the","start","method",".","Please","consider","the","comments","of","the","start","method","because","some","internal","variables","need","to","be","set","in","the","concrete","implementation",".","Moreover",",","the","`","setup_worker_ssh_tunnels","(",")","`","method","can","be","used","to","setup","ssh","tunnels","so","that","all","entities","can","talk","to","each","other","."]
docstr: Initialization method.
  
  Args:
      runtime_group: The group where the workers will be started in.
docstr_tok: ["Initialization","method",".","Args",":","runtime_group",":","The","group","where","the","workers","will","be","started","in","."]
code: def __init__(self, runtime_group: RuntimeGroup):
      """Initialization method.
  
      Args:
          runtime_group: The group where the workers will be started in.
      """
      # Create the Logger
      self.log = logging.getLogger(__name__)
  
      self._group = runtime_group
      self._ports_per_host: Dict[
          str, List[int]
      ] = {}  # Needs to be set in `self.start()`
  
      self.log.debug("Worker launcher initialized")
  
imports: import atexit
  import logging
  from subprocess import Popen
  from typing import Dict, List, Optional, Union
  from lazycluster.exceptions import LazyclusterError
  from lazycluster.runtime_mgmt import RuntimeGroup
label_desc: Use image node_id 1 to create a new WorkerLauncher object from inherited base classes: object with example: obj = WorkerLauncher(runtime_group)