docs: def start(self, script, interpreter=sys.executable, args=None,
                error_callback=None, reuse=False):
          """
          Starts the backend process.
  
          The backend is a python script that starts a
          :class:`pyqode.core.backend.JsonServer`. You must write the backend
          script so that you can apply your own backend configuration.
  
          The script can be run with a custom interpreter. The default is to use
          sys.executable.
  
          .. note:: This restart the backend process if it was previously
                    running.
  
          :param script: Path to the backend script.
          :param interpreter: The python interpreter to use to run the backend
              script. If None, sys.executable is used unless we are in a frozen
              application (frozen backends do not require an interpreter).
          :param args: list of additional command line args to use to start
              the backend process.
          :param reuse: True to reuse an existing backend process. WARNING: to
              use this, your application must have one single server script. If
              you're creating an app which supports multiple programming
              languages you will need to merge all backend scripts into one
              single script, otherwise the wrong script might be picked up).
          """
          self._shared = reuse
          if reuse and BackendManager.SHARE_COUNT:
              self._port = BackendManager.LAST_PORT
              self._process = BackendManager.LAST_PROCESS
              BackendManager.SHARE_COUNT += 1
          else:
              if self.running:
                  self.stop()
              self.server_script = script
              self.interpreter = interpreter
              self.args = args
              backend_script = script.replace('.pyc', '.py')
              self._port = self.pick_free_port()
              if hasattr(sys, "frozen") and not backend_script.endswith('.py'):
                  # frozen backend script on windows/mac does not need an
                  # interpreter
                  program = backend_script
                  pgm_args = [str(self._port)]
              else:
                  program = interpreter
                  pgm_args = [backend_script, str(self._port)]
              if args:
                  pgm_args += args
              self._process = BackendProcess(self.editor)
              if error_callback:
                  self._process.error.connect(error_callback)
              self._process.start(program, pgm_args)
  
              if reuse:
                  BackendManager.LAST_PROCESS = self._process
                  BackendManager.LAST_PORT = self._port
                  BackendManager.SHARE_COUNT += 1
              comm('starting backend process: %s %s', program,
                   ' '.join(pgm_args))
              self._heartbeat_timer.start()