Job-Ergebnisse abrufen und speichern
Paketversionen
Der Code auf dieser Seite wurde mit den folgenden Anforderungen entwickelt. Wir empfehlen die Verwendung dieser oder neuerer Versionen.
qiskit-ibm-runtime~=0.45.1
Quantenworkflows dauern oft eine Weile und können über mehrere Sitzungen laufen. Wenn du deinen Python-Kernel neu startest, gehen alle im Arbeitsspeicher gespeicherten Ergebnisse verloren. Um Datenverlust zu vermeiden, kannst du Ergebnisse in einer Datei speichern und Ergebnisse früherer Jobs von IBM Quantum® abrufen, damit deine nächste Sitzung dort weitermachen kann, wo du aufgehört hast.
Job-Ergebnisse von IBM Quantum abrufen
IBM Quantum speichert automatisch die Ergebnisse jedes Jobs, damit du sie zu einem späteren Zeitpunkt abrufen kannst. Nutze diese Funktion, um Quantenprogramme über Kernel-Neustarts hinweg fortzusetzen und frühere Ergebnisse einzusehen. Du kannst die ID eines Jobs programmatisch über seine job_id-Methode ermitteln oder alle deine eingereichten Jobs und ihre IDs auf der Workloads-Seite einsehen.
Um einen Job programmatisch zu finden, verwende die Methode QiskitRuntimeService.jobs. Standardmäßig werden die zuletzt eingereichten Jobs zurückgegeben, aber du kannst Jobs auch nach Backend-Name, Erstellungsdatum und mehr filtern. Die folgende Zelle findet alle Jobs, die in den letzten drei Monaten eingereicht wurden. Das Argument created_after muss ein datetime.datetime-Objekt sein.
# Added by doQumentation — installs the packages this notebook needs if they are missing
import importlib.util
_needed = {"qiskit_ibm_runtime": "qiskit-ibm-runtime"}
_missing = [pip for module, pip in _needed.items()
if importlib.util.find_spec(module) is None]
# One at a time, so a package that fails to install does not block the others
for _pip in _missing:
%pip install -q {_pip}
if not _missing:
print("\u2713 All required packages are installed")
import datetime
from qiskit_ibm_runtime import QiskitRuntimeService
three_months_ago = datetime.datetime.now() - datetime.timedelta(days=90)
service = QiskitRuntimeService()
jobs_in_last_three_months = service.jobs(created_after=three_months_ago)
jobs_in_last_three_months[:3] # show first three jobs
[<RuntimeJobV2('d762oo5bjrds73ed2u80', 'estimator')>,
<RuntimeJobV2('d762omnq1anc738d2cj0', 'sampler')>,
<RuntimeJobV2('d762oma3qcgc73fse6dg', 'sampler')>]
Du kannst auch nach Backend, Job-Status, Sitzung und mehr auswählen. Weitere Informationen findest du in der API-Dokumentation unter QiskitRuntimeService.jobs.
Sobald du die Job-ID hast, verwende die Methode QiskitRuntimeService.job, um den Job abzurufen.
# Get ID of most recent successful job for demonstration.
# This will not work if you've never successfully run a job.
successful_job = next(
j for j in service.jobs(limit=1000) if j.status() == "DONE"
)
job_id = successful_job.job_id()
print(job_id)
d762omnq1anc738d2cj0
retrieved_job = service.job(job_id)
retrieved_job.result()
PrimitiveResult([SamplerPubResult(data=DataBin(meas=BitArray(<shape=(), num_shots=4096, num_bits=127>)), metadata={'circuit_metadata': {}})], metadata={'execution': {'execution_spans': ExecutionSpans([DoubleSliceSpan(<start='2026-03-31 20:19:56', stop='2026-03-31 20:19:58', size=4096>)])}, 'version': 2})
Ergebnisse auf der Festplatte speichern
Du kannst Ergebnisse auch auf der Festplatte speichern. Verwende dazu Pythons integrierte JSON-Bibliothek mit Encodern aus qiskit-ibm-runtime.
import json
from qiskit_ibm_runtime import RuntimeEncoder
with open("result.json", "w") as file:
json.dump(retrieved_job.result(), file, cls=RuntimeEncoder)
Du kannst dieses Array dann in einem separaten Kernel von der Festplatte laden.
from qiskit_ibm_runtime import RuntimeDecoder
with open("result.json", "r") as file:
result = json.load(file, cls=RuntimeDecoder)
result
PrimitiveResult([SamplerPubResult(data=DataBin(meas=BitArray(<shape=(), num_shots=4096, num_bits=127>)), metadata={'circuit_metadata': {}})], metadata={'execution': {'execution_spans': ExecutionSpans([DoubleSliceSpan(<start='2026-03-31 20:19:56', stop='2026-03-31 20:19:58', size=4096>)])}, 'version': 2})