Recuperar y guardar los resultados del trabajo
El código de esta página se ha desarrollado teniendo en cuenta los siguientes requisitos. Recomendamos utilizar estas versiones o versiones más recientes.
qiskit-ibm-runtime~=0.45.1
Los flujos de trabajo de Quantum a menudo tardan en completarse y pueden ejecutarse a lo largo de muchas sesiones. Al reiniciar el kernel Python se perderán los resultados almacenados en la memoria. Para evitar la pérdida de datos, puede guardar los resultados en un archivo y recuperar los resultados de trabajos anteriores desde IBM Quantum® para que su próxima sesión pueda continuar donde lo dejó.
Recuperar los resultados del trabajo de IBM Quantum
IBM Quantum almacena automáticamente los resultados de cada trabajo para que pueda recuperarlos más adelante. Utilice esta función para continuar con los programas quantum a través de reinicios del kernel y revisar los resultados anteriores. Puede obtener el ID de un trabajo programáticamente a través de su método job_id , o puede ver todos sus trabajos enviados y sus IDs en la página Cargas de Trabajo.
Para buscar un trabajo mediante programación, utilice el método QiskitRuntimeService.jobs método. Por defecto, devuelve los trabajos enviados más recientemente, pero también puede filtrar los trabajos por nombre de backend, fecha de creación, etc. La siguiente celda encuentra los trabajos enviados en los últimos tres meses. El argumento created_after debe ser un datetime.datetime objeto.
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')>]
También puede seleccionar por backend, estado del trabajo, sesión, etc. Para más información, consulte QiskitRuntimeService.jobs en la documentación de la API.
Una vez que tenga el ID del trabajo, utilice el método QiskitRuntimeService.job para recuperarlo.
# 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})
Guardar resultados en el disco
También puede guardar los resultados en el disco. Para ello, utilice la biblioteca JSON integrada en Python con los codificadores de Qiskit Runtime.
import json
from qiskit_ibm_runtime import RuntimeEncoder
with open("result.json", "w") as file:
json.dump(retrieved_job.result(), file, cls=RuntimeEncoder)A continuación, puede cargar esta matriz desde el disco en un núcleo separado.
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})