qiskit-job-execution
Table of Contents
Job Submission and Results
Job submission sends a circuit (or batch of circuits) to a backend and returns a Job object for tracking. Jobs on remote backends (real hardware, cloud simulators) are queued; results arrive later. Local simulators return results immediately.
Submitting Jobs
from qiskit_aer import AerSimulator from qiskit_ibm_runtime import QiskitRuntimeService # Local simulator: synchronous sim = AerSimulator() result = sim.run(qc, shots=1000).result() print(result.get_counts()) # Remote backend: asynchronous service = QiskitRuntimeService() backend = service.backend("ibmq_qx5") job = backend.run(qc, shots=1000) # Job ID is immediate; results come later print(f"Job ID: {job.job_id()}") # Wait for results (blocks until done) result = job.result() print(result.get_counts())
Job Status and Monitoring
Check job progress without blocking:
# Query job status status = job.status() print(f"Status: {status}") # Get queue position if status.name == "QUEUED": print(f"Queue position: {job.queue_position()}") # Wait with a timeout result = job.result(timeout=3600) # 1-hour timeout
Batch Execution
Run multiple circuits efficiently:
circuits = [qc1, qc2, qc3, ...] job = backend.run(circuits, shots=1000) result = job.result() # Access results per circuit counts_0 = result.get_counts(0) # First circuit counts_1 = result.get_counts(1) # Second circuit
Retrieving Past Results
Retrieve results from completed jobs:
# By job ID completed_job = backend.retrieve_job("abc123...") result = completed_job.result()
Remote execution has latency (queue wait + execution + classical post-processing). For iterative algorithms, consider designing circuits to evaluate multiple parameter sets per job to amortize overhead.
qiskit-job-execution.md · Last modified: by 127.0.0.1
