  
      def terminate(self):
          """ Terminate the subprocess """
          logger.debug("Terminating wrapper")
          if self.command == "train":
              timeout = get_config().tk_vars["traintimeout"].get()
              logger.debug("Sending Exit Signal")
              print("Sending Exit Signal", flush=True)
              now = time()
              if os.name == "nt":
 
</s> remove                 if self.process.poll() is not None:
 </s> add                 if process.poll() is not None: </s> remove from .utils import get_config, get_images
 </s> add from .utils import get_config, get_images, LongRunningTask </s> remove                 self.process.send_signal(signal.SIGINT)
 </s> add                 process.send_signal(signal.SIGINT)
        if command == "train":
  
      def terminate(self):
          """ Terminate the subprocess """
          logger.debug("Terminating wrapper")
        if command == "train":
              timeout = get_config().tk_vars["traintimeout"].get()
              logger.debug("Sending Exit Signal")
              print("Sending Exit Signal", flush=True)
              now = time()
              if os.name == "nt":
keep keep keep keep replace keep keep keep keep keep
 GUI responsiveness and feature updates

- Add error handling to LongRunningTask
- Analysis: Fix timestats bug for missing session data
- Training: Update training graph inside LongRunningTask
- Training: Smoothing Amount Slider geometry fix
- Training: Auto update Analysis tab on training start and save interval
- Scripts: Keep control of the UI when terminating by terminating using LongRunningTask 
lib/gui/wrapper.py