Skip to main content
IBM Quantum Platform

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 jobs

Output:

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

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})
Esta página foi útil?
Relate um bug, erro de digitação ou solicite conteúdo no GitHub.