code: def start(self, options=None):
          
          if self.is_running():
              self.logger.warn('ZAP is already running on port {0}'.format(self.port))
              return
  
          if platform.system() == 'Windows' or platform.system().startswith('CYGWIN'):
              executable = 'zap.bat'
          else:
              executable = 'zap.sh'
  
          executable_path = os.path.join(self.zap_path, executable)
          if not os.path.isfile(executable_path):
              raise ZAPError(('ZAP was not found in the path "{0}". You can set the path to where ZAP is ' +
                              'installed on your system using the --zap-path command line parameter or by ' +
                              'default using the ZAP_PATH environment variable.').format(self.zap_path))
  
          zap_command = [executable_path, '-daemon', '-port', str(self.port)]
          if options:
              extra_options = shlex.split(options)
              zap_command += extra_options
  
          if self.log_path is None:
              log_path = os.path.join(self.zap_path, 'zap.log')
          else:
              log_path = os.path.join(self.log_path, 'zap.log')
  
          self.logger.debug('Starting ZAP process with command: {0}.'.format(' '.join(zap_command)))
          self.logger.debug('Logging to {0}'.format(log_path))
          with open(log_path, 'w+') as log_file:
              subprocess.Popen(
                  zap_command, cwd=self.zap_path, stdout=log_file,
                  stderr=subprocess.STDOUT)
  
          self.wait_for_zap(self.timeout)
  
          self.logger.debug('ZAP started successfully.')
docs: Start the ZAP Daemon.