class_docstr: Experiment Class - create and run an experiment
  
  :param exp_config: configuration of the experiment
  :type exp_config: BasicConfig.BasicConfig
  :param username: username, default: None - will use login username
  :type username: str
  :param connector: connector to database
  :type connector: AbstractConnector
  :param auppath: Auptimizer env.ini file folder, default is either ``./.aup`` or ``~/.aup``
  :type auppath: str
  :param sleep_time: time to pause between jobs
  :type sleep_time: int
class_docstr_tok: ["Experiment","Class","-","create","and","run","an","experiment",":","param","exp_config",":","configuration","of","the","experiment",":","type","exp_config",":","BasicConfig.BasicConfig",":","param","username",":","username",",","default",":","None","-","will","use","login","username",":","type","username",":","str",":","param","connector",":","connector","to","database",":","type","connector",":","AbstractConnector",":","param","auppath",":","Auptimizer","env.ini","file","folder",",","default","is","either","``",".\/.aup","``","or","``","~\/.aup","``",":","type","auppath",":","str",":","param","sleep_time",":","time","to","pause","between","jobs",":","type","sleep_time",":","int"]
docstr: Start experiment
docstr_tok: ["Start","experiment"]
code: def start(self):
      """
      Start experiment
      """
      remaining_jobs = self.proposer.get_remaining_jobs()
      parallel_jobs = min(remaining_jobs, self.exp_config.n_parallel)
  
      self.request_stop_thr = threading.Thread(
          target=self._check_status
      )
      self.request_stop_thr.start()
  
      for i in range(parallel_jobs - len(self.pending_jobs)):
          rc = self.submit_job()
          self.submitted = self.submitted or rc
          if not self.submitted:
              logger.fatal("No job is running; quit")
              self.proposer.set_status(ProposerStatus.FAILED)
              raise Exception("Cannot run experiment!")
          elif not rc:
              logger.warning("Job submission failed, keep running")
  
imports: import json
  import logging
  import os
  import signal
  import sys
  import _thread
  import threading
  import time
  from ..Proposer import get_proposer, SPECIAL_EXIT_PROPOSERS
  from .Job import Job
  from .Resource import get_resource_manager
  from ..aup import BasicConfig
  from ..utils import set_default_keyvalue, check_missing_key, get_default_connector, get_default_username
  from ..compression.utils import *
  from ..Proposer import ProposerStatus
label_desc: Use image node_id 6 for calling the Experiment obj's underlying member method code with example usage: obj.start() without return types