class_docstr: Supervisor thread that runs your script.
class_docstr_tok: ["Supervisor","thread","that","runs","your","script","."]
code: def run(self):
      try:
          self._ret = self._target(*self._args, **self._kwargs)
      except StopIteration:
          logger.debug(
              (
                  "Thread runner raised StopIteration. Interpreting it as a "
                  "signal to terminate the thread without error."
              )
          )
      except SystemExit as e:
          # Do not propagate up for graceful termination.
          if e.code == 0:
              logger.debug(
                  (
                      "Thread runner raised SystemExit with error code 0. "
                      "Interpreting it as a signal to terminate the thread "
                      "without error."
                  )
              )
          else:
              # If non-zero exit code, then raise exception to main thread.
              self._propagate_exception(e)
      except BaseException as e:
          # Propagate all other exceptions to the main thread.
          self._propagate_exception(e)
  
imports: import os
  import socket
  from contextlib import closing
  import logging
  import queue
  import threading
  from typing import Optional
  import numpy
  from ray.air.constants import _ERROR_REPORT_TIMEOUT
label_desc: Use image node_id 3 for calling the RunnerThread obj's underlying member method code with example usage: obj.run() without return types