          # TODO: Find a way to interrupt input() if the target iterations are
          # reached. At the moment, setting a target iteration and using the -p
          # flag is the only guaranteed way to exit the training loop on
          # hitting target iterations.
          print("Starting. Press 'ENTER' to stop training and save model")
          try:
              input()
          except KeyboardInterrupt:
              pass
  
 
</s> remove         print("Using live preview.\n"
              "Press 'ENTER' on the preview window to save and quit.\n"
              "Press 'S' on the preview window to save model weights "
              "immediately")
 </s> add         logger.info("Using live preview.\n"
                    "Press 'ENTER' on the preview window to save and quit.\n"
                    "Press 'S' on the preview window to save model weights "
                    "immediately") </s> remove     def join(self):
        """ Join the process """
        self.process.join()
 </s> add     def run(self):
        try:
            if self._target:
                self._target(*self._args, **self._kwargs)
        except Exception:  # pylint: disable=broad-except
            self.err = sys.exc_info()
        finally:
            # Avoid a refcycle if the thread is running a function with
            # an argument that has a member that points to the thread.
            del self._target, self._args, self._kwargs </s> remove         script = self.import_script()
        process = script(arguments)
        process.process()
 </s> add         log_setup(arguments.loglevel)
        logger.debug("Executing: %s. PID: %s", self.command, os.getpid())
        try:
            script = self.import_script()
            process = script(arguments)
            process.process()
        except KeyboardInterrupt:  # pylint: disable=try-except-raise
            raise
        except SystemExit:
            pass
        except Exception:  # pylint: disable=broad-except
            crash_file = crash_log()
            logger.exception("Got Exception on main handler:")
            logger.critical("An unexpected crash has occurred. Crash report written to %s. "
                            "Please verify you are running the latest version of faceswap "
                            "before reporting", crash_file)

        finally:
            safe_shutdown()
        logger.info("Starting. Press 'ENTER' to stop training and save model")
          # TODO: Find a way to interrupt input() if the target iterations are
          # reached. At the moment, setting a target iteration and using the -p
          # flag is the only guaranteed way to exit the training loop on
          # hitting target iterations.
        logger.info("Starting. Press 'ENTER' to stop training and save model")
          try:
              input()
          except KeyboardInterrupt:
              pass
  
keep keep keep keep replace keep keep keep keep keep
 Logging (#541)

* Convert prints to logger. Further logging improvements. Tidy  up

* Fix system verbosity. Allow SystemExit

* Fix reload extract bug

* Child Traceback handling

* Safer shutdown procedure

* Add shutdown event to queue manager

* landmarks_as_xy > property. GUI notes + linting. Aligner bugfix

* fix FaceFilter. Enable nFilter when no Filter is supplied

* Fix blurry face filter

* Continue on IO error. Better error handling

* Explicitly print stack trace tocrash log

* Windows Multiprocessing bugfix

* Add git info and conda version to crash log

* Windows/Anaconda mp bugfix

* Logging fixes for training 
scripts/train.py