Recuperar e salvar resultados de tarefas
O código desta página foi desenvolvido usando os seguintes requisitos. Recomendamos o uso dessas versões ou de versões mais recentes.
qiskit-ibm-runtime~=0.45.1
Os fluxos de trabalho quânticos geralmente demoram um pouco para serem concluídos e podem ser executados em várias sessões. Reiniciar o kernel do Python significa que você perderá todos os resultados armazenados na memória. Para evitar a perda de dados, você pode salvar os resultados em um arquivo e recuperar os resultados de trabalhos anteriores em IBM Quantum® para que a próxima sessão possa continuar de onde parou.
Recuperar resultados de tarefas de IBM Quantum
IBM O Quantum armazena automaticamente os resultados de cada trabalho para que você possa recuperá-los posteriormente. Use esse recurso para continuar os programas quânticos durante as reinicializações do kernel e revisar os resultados anteriores. Você pode obter o ID de um trabalho programaticamente por meio do método job_id ou pode ver todos os trabalhos enviados e seus IDs na página Cargas de trabalho.
Para encontrar um trabalho de forma programática, use o método QiskitRuntimeService.jobs método. Por padrão, isso retorna os trabalhos enviados mais recentemente, mas você também pode filtrar os trabalhos por nome do backend, data de criação e muito mais. A célula a seguir encontra todos os trabalhos enviados nos últimos três meses. O argumento created_after deve ser um objeto 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')>]
Você também pode selecionar por backend, estado do trabalho, sessão e muito mais. Para obter mais informações, consulte QiskitRuntimeService.jobs na documentação da API.
Quando você tiver o ID do trabalho, use o método QiskitRuntimeService.job para recuperá-la.
# 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})
Salvar resultados no disco
Você também pode querer salvar os resultados no disco. Para isso, use a biblioteca JSON integrada d Python com os 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)Em seguida, você pode carregar essa matriz do disco em um kernel 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})