Job-Ergebnisse abrufen und speichern
Der Code auf dieser Seite wurde unter Berücksichtigung der folgenden Anforderungen entwickelt. Wir empfehlen die Verwendung dieser oder neuerer Versionen.
qiskit-ibm-runtime~=0.45.1
Quantum-Workflows dauern oft eine Weile und können sich über mehrere Sitzungen erstrecken. Wenn Sie Ihren Python Kernel neu starten, gehen alle im Speicher abgelegten Ergebnisse verloren. Um Datenverluste zu vermeiden, können Sie die Ergebnisse in einer Datei speichern und die Ergebnisse früherer Aufträge unter IBM Quantum® abrufen, damit Sie bei der nächsten Sitzung dort weitermachen können, wo Sie aufgehört haben.
Abrufen von Job-Ergebnissen von IBM Quantum
IBM Quantum speichert automatisch die Ergebnisse jedes Auftrags, so dass Sie diese zu einem späteren Zeitpunkt abrufen können. Mit dieser Funktion können Sie Quantum-Programme über Kernel-Neustarts hinweg fortsetzen und frühere Ergebnisse überprüfen. Sie können die ID eines Auftrags programmatisch über die Methode job_id abrufen, oder Sie können alle Ihre eingereichten Aufträge und deren IDs auf der Seite Workloads einsehen.
Um eine Stelle programmatisch zu suchen, verwenden Sie die QiskitRuntimeService.jobs methode. Standardmäßig werden hier die zuletzt übermittelten Aufträge angezeigt, aber Sie können Aufträge auch nach Backend-Name, Erstellungsdatum und anderen Kriterien filtern. In der folgenden Zelle finden Sie alle in den letzten drei Monaten eingereichten Stellenangebote. Das Argument created_after muss ein datetime.datetime objekt sein.
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 jobsOutput:
[<RuntimeJobV2('d762oo5bjrds73ed2u80', 'estimator')>,
<RuntimeJobV2('d762omnq1anc738d2cj0', 'sampler')>,
<RuntimeJobV2('d762oma3qcgc73fse6dg', 'sampler')>]
Sie können auch nach Backend, Auftragsstatus, Sitzung und mehr auswählen. Für weitere Informationen siehe QiskitRuntimeService.jobs in der API-Dokumentation.
Sobald Sie die Job-ID haben, verwenden Sie die QiskitRuntimeService.job methode, um sie 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)Output:
d762omnq1anc738d2cj0
retrieved_job = service.job(job_id)
retrieved_job.result()Output:
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 Festplatte speichern
Möglicherweise möchten Sie die Ergebnisse auch auf der Festplatte speichern. Verwenden Sie dazu die in Python 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)Sie können 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)
resultOutput:
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})