code: def run(self):
          '''
              run - The thread main. Will attempt to stop and join the attached thread.
          '''
  
          # Try to silence default exception printing.
          self.otherThread._Thread__stderr = self._stderr
          if hasattr(self.otherThread, '_Thread__stop'):
              # If py2, call this first to start thread termination cleanly.
              #   Python3 does not need such ( nor does it provide.. )
              self.otherThread._Thread__stop()
          while self.otherThread.isAlive():
              # We loop raising exception incase it's caught hopefully this breaks us far out.
              ctypes.pythonapi.PyThreadState_SetAsyncExc(ctypes.c_long(self.otherThread.ident), ctypes.py_object(self.exception))
              self.otherThread.join(self.repeatEvery)
  
          try:
              self._stderr.close()
          except:
              pasf run(self):
          '''
              run - The thread main. Will attempt to stop and join the attached thread.
          '''
  
          # Try to silence default exception printing.
          self.otherThread._Thread__stderr = self._stderr
          if hasattr(self.otherThread, '_Thread__stop'):
              # If py2, call this first to start thread termination cleanly.
              #   Python3 does not need such ( nor does it provide.. )
              self.otherThread._Thread__stop()
          while self.otherThread.isAlive():
              # We loop raising exception incase it's caught hopefully this breaks us far out.
              ctypes.pythonapi.PyThreadState_SetAsyncExc(ctypes.c_long(self.otherThread.ident), ctypes.py_object(self.exception))
              self.otherThread.join(self.repeatEvery)
  
          try:
              self._stderr.close()
          except:
              pass
docs: run - The thread main. Will attempt to stop and join the attached thread.