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: Stop experiment by enter "Ctrl-C"
docstr_tok: ["Stop","experiment","by","enter","``","Ctrl-C","''"]
code: def _suspend(self, sig, frame):
      """
      Stop experiment by enter "Ctrl-C"
      """
      logger.fatal("Experiment ended at user's request")
      for i in self.pending_jobs:
          logger.warning(
              "Job with ID %d is cancelled" % i
          )  # Note: cancelled job won't be run again.
      try:
          self.proposer.save(os.path.join(".", "exp%d.pkl" % self.eid))
      except NotImplementedError:
          pass
      self.resource_manager.suspend()
      result = self.resource_manager.finish(status="STOPPED")
      self.connector.close()
      if result is None:
          logger.warning("No valid result so far")
      else:
          logger.critical(
              "Best job (%d) with score %f in experiment %d"
              % (result[0], result[1], self.eid)
          )
      if self.request_stop_thr is not None:
          self.request_stop_thr.join()
      sys.exit(1)
  
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 9 for calling the Experiment obj's underlying member method code with example usage: obj._suspend(sig, frame) without return types