예제 #1
0
 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
예제 #2
0
    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