code: def start(self, timeout=None):
          
          if self._running.isSet():
              raise RuntimeError("Device client already started.")
          # Make sure we have an ioloop
          self.ioloop = self._ioloop_manager.get_ioloop()
          if timeout:
              t0 = self.ioloop.time()
          self._ioloop_manager.start(timeout)
          self.ioloop.add_callback(self._install)
          if timeout:
              remaining_timeout = timeout - (self.ioloop.time() - t0)
              self.wait_running(remaining_timeout)
docs: Start the client in a new thread.
  
          Parameters
          ----------
          timeout : float in seconds
              Seconds to wait for client thread to start. Do not specify a
              timeout if start() is being called from the same ioloop that this
              client will be installed on, since it will block the ioloop without
              progressing.