Saltar al contenido principal
Este proyecto está en fase beta. ¿Encontraste un error? Abre un issue en GitHub. ¿Tienes una pregunta o una idea? Pregunta en Discussions — ¡nos encantaría tu opinión!
¿Cómo es la calidad de la traducción en esta página?

Recuperar y guardar resultados de trabajos

Versiones de paquetes

El código de esta página fue desarrollado con los siguientes requisitos. Recomendamos usar estas versiones o más recientes.

qiskit-ibm-runtime~=0.45.1

Los flujos de trabajo cuánticos suelen tardar bastante en completarse y pueden extenderse a lo largo de muchas sesiones. Si reinicias el kernel de Python, perderás cualquier resultado almacenado en memoria. Para evitar la pérdida de datos, puedes guardar los resultados en un archivo y recuperar los resultados de trabajos anteriores desde IBM Quantum®, de modo que tu próxima sesión pueda retomar donde la dejaste.

Recuperar resultados de trabajos desde IBM Quantum​

IBM Quantum almacena automáticamente los resultados de cada trabajo para que puedas recuperarlos en una fecha posterior. Usa esta función para continuar programas cuánticos entre reinicios del kernel y revisar resultados pasados. Puedes obtener el ID de un trabajo de forma programática a través de su método job_id, o puedes ver todos tus trabajos enviados y sus IDs en la página de Cargas de trabajo.

Para encontrar un trabajo de forma programática, usa el método QiskitRuntimeService.jobs. Por defecto, esto devuelve los trabajos enviados más recientemente, pero también puedes filtrar trabajos por nombre de backend, fecha de creación y más. La siguiente celda encuentra todos los trabajos enviados en los últimos tres meses. El argumento created_after debe ser un objeto datetime.datetime.

# 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')>]

También puedes filtrar por backend, estado del trabajo, sesión y más. Para más información, consulta QiskitRuntimeService.jobs en la documentación de la API.

Una vez que tengas el ID del trabajo, usa 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)
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})

Guardar resultados en disco​

También puede que quieras guardar los resultados en disco. Para ello, usa la biblioteca JSON integrada de Python con los codificadores de 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)

Luego puedes cargar este array desde disco en un kernel separado.

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