def __init__(self, backend: Backend) -> None: self.name = backend.name() self.n_qubits = backend.configuration().n_qubits self.operational = backend.status().operational self.simulator = backend.configuration().simulator self.pending_jobs = backend.status().pending_jobs self.active_jobs = backend.job_limit().active_jobs self.maximum_jobs = backend.job_limit().maximum_jobs self.status_msg = backend.status().status_msg # only available by real QPUs try: self.quantum_volume = backend.configuration().quantum_volume except AttributeError: pass
def try_to_enter(self, backend_name:str, backend:Backend) -> bool: """Try to enter the lock of the backend Args: backend_name (str) backend (Backend) Returns: bool: True, if successfully entered the lock. False, otherwise """ try: lock = self._locks[backend_name] counter = self._counters[backend_name] except KeyError: lock = Lock() counter = 0 self._locks[backend_name] = lock self._counters[backend_name] = counter with lock: limit = backend.job_limit() self._log.debug(f"Backend: {backend_name} Counter:{counter} Active_Jobs:{limit.active_jobs} Maximum_jobs:{limit.maximum_jobs}") if limit.active_jobs < limit.maximum_jobs: if counter < limit.maximum_jobs: self._counters[backend_name] += 1 return True return False