class_docstr: PiGear is similar to CamGear API but exclusively made to support various Raspberry Pi Camera Modules (such as OmniVision OV5647 Camera Module and Sony IMX219 Camera Module).
  PiGear provides a flexible multi-threaded framework around complete picamera python library, and provide us the ability to exploit almost all of its parameters like brightness,
  saturation, sensor_mode, iso, exposure, etc. effortlessly. Furthermore, PiGear also supports multiple camera modules, such as in the case of Raspberry-Pi Compute Module IO boards.
  
  Best of all, PiGear contains Threaded Internal Timer - that silently keeps active track of any frozen-threads/hardware-failures and exit safely, if any does occur. That means that
  if you're running PiGear API in your script and someone accidentally pulls the Camera-Module cable out, instead of going into possible kernel panic, API will exit safely to save resources.
  
  !!! warning "Make sure to enable [Raspberry Pi hardware-specific settings](https://picamera.readthedocs.io/en/release-1.13/quickstart.html) prior using this API, otherwise nothing will work."
class_docstr_tok: ["PiGear","is","similar","to","CamGear","API","but","exclusively","made","to","support","various","Raspberry","Pi","Camera","Modules","(","such","as","OmniVision","OV5647","Camera","Module","and","Sony","IMX219","Camera","Module",")",".","PiGear","provides","a","flexible","multi-threaded","framework","around","complete","picamera","python","library",",","and","provide","us","the","ability","to","exploit","almost","all","of","its","parameters","like","brightness",",","saturation",",","sensor_mode",",","iso",",","exposure",",","etc",".","effortlessly",".","Furthermore",",","PiGear","also","supports","multiple","camera","modules",",","such","as","in","the","case","of","Raspberry-Pi","Compute","Module","IO","boards",".","Best","of","all",",","PiGear","contains","Threaded","Internal","Timer","-","that","silently","keeps","active","track","of","any","frozen-threads\/hardware-failures","and","exit","safely",",","if","any","does","occur",".","That","means","that","if","you","'re","running","PiGear","API","in","your","script","and","someone","accidentally","pulls","the","Camera-Module","cable","out",",","instead","of","going","into","possible","kernel","panic",",","API","will","exit","safely","to","save","resources",".","!","!","!","warning","``","Make","sure","to","enable","[","Raspberry","Pi","hardware-specific","settings","]","(","https",":","\/\/picamera.readthedocs.io\/en\/release-1.13\/quickstart.html",")","prior","using","this","API",",","otherwise","nothing","will","work",".","''"]
docstr: Threaded Internal Timer that keep checks on thread execution timing
docstr_tok: ["Threaded","Internal","Timer","that","keep","checks","on","thread","execution","timing"]
code: def __timeit(self):
      """
      Threaded Internal Timer that keep checks on thread execution timing
      """
  
      # assign current time
      self.__t_elasped = time.time()
  
      # loop until termainated
      while not (self.__terminate):
          # check for frozen thread
          if time.time() - self.__t_elasped > self.__failure_timeout:
              # log failure
              self.__logging and logger.critical(
                  "Camera Module Disconnected!"
              )
              # prepare for clean exit
              self.__exceptions = True
              self.__terminate = True
  
file_path: vidgear/vidgear/gears/pigear.py
imports: import cv2
  import sys
  import time
  import logging
  from threading import Thread
  from .helper import capPropId, logger_handler, import_dependency_safe, logcurr_vidgear_ver
label_desc: Use image node_id 3 for calling the PiGear obj's underlying member method code with example usage: obj.__timeit() without return types