class_docstr: Thread to keep reading the frame data from stdout. This is
  useful when streaming from a webcam. Otherwise, if the user code
  does not grab frames fast enough, the buffer will fill up, leading
  to lag, and ffmpeg can also stall (experienced on Linux). The
  get_frame() method always returns the last available image.
code: def run(self):
      # This runs in the worker thread
      try:
          while not self._should_stop:
              time.sleep(0)  # give control to other threads
              frame = self._gen.__next__()
              with self._lock:
                  self._frame = frame
                  self._frame_is_new = True
      except (StopIteration, EOFError):
          pass
  
imports: import re
  import sys
  import time
  import logging
  import platform
  import threading
  import subprocess
  import imageio_ffmpeg
  import numpy
  from ..core import Format, image_as_uint
label_desc: Use image node_id 4 for calling the FrameCatcher obj's underlying member method code with example usage: obj.run() without return types