Sari la conținutul principal

Recuperează și salvează rezultatele joburilor

Versiuni de pachete

Codul de pe această pagină a fost dezvoltat folosind următoarele cerințe. Recomandăm să folosești aceste versiuni sau unele mai noi.

qiskit-ibm-runtime~=0.45.1

Fluxurile de lucru cuantice durează adesea mult timp și pot rula pe parcursul mai multor sesiuni. Repornirea kernel-ului Python înseamnă că vei pierde orice rezultate stocate în memorie. Pentru a evita pierderea datelor, poți salva rezultatele într-un fișier și recupera rezultatele joburilor anterioare din IBM Quantum®, astfel încât sesiunea ta următoare să poată continua de unde ai rămas.

Recuperează rezultatele joburilor din IBM Quantum​

IBM Quantum stochează automat rezultatele fiecărui job pentru ca tu să le poți recupera ulterior. Folosește această funcționalitate pentru a continua programele cuantice după reporniri ale kernel-ului și pentru a revizui rezultatele anterioare. Poți obține ID-ul unui job în mod programatic prin metoda job_id, sau poți vedea toate joburile trimise și ID-urile lor pe pagina Workloads.

Pentru a găsi un job în mod programatic, folosește metoda QiskitRuntimeService.jobs. În mod implicit, aceasta returnează joburile trimise cel mai recent, dar poți filtra joburile și după numele Backend-ului, data creării și altele. Celula următoare găsește toate joburile trimise în ultimele trei luni. Argumentul created_after trebuie să fie un obiect datetime.datetime.

# Added by doQumentation — required packages for this notebook
!pip install -q qiskit-ibm-runtime
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')>]

Poți selecta și după Backend, starea jobului, Session și altele. Pentru mai multe informații, consultă QiskitRuntimeService.jobs în documentația API.

Odată ce ai ID-ul jobului, folosește metoda QiskitRuntimeService.job pentru a-l recupera.

# 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})

Salvează rezultatele pe disc​

Poate dorești și să salvezi rezultatele pe disc. Pentru a face asta, folosește biblioteca JSON integrată în Python împreună cu encoderele din 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)

Poți apoi încărca acest rezultat de pe disc într-un kernel separat.

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})