code: def start(self, daemon=True):
          
          if self._run_lock.acquire(False):
              try:
                  # there is a short race window in which `start` release the lock,
                  # but `run` has not picked it up yet, but the thread exists anyway
                  if self._run_thread is None:
                      self._run_thread = threading.Thread(target=self._run_in_thread)
                      self._run_thread.daemon = daemon
                      self._run_thread.start()
              finally:
                  self._run_lock.release()
docs: Start driving the chain asynchronously, return immediately
  
          :param daemon: ungracefully kill the driver when the program terminates
          :type daemon: bool