Skip to main content
IBM Quantum Platform

Recupera e salva i risultati del lavoro

  • Il codice di questa pagina è stato sviluppato in base ai seguenti requisiti. Si consiglia di utilizzare queste versioni o versioni più recenti.

    qiskit-ibm-runtime~=0.45.1
    

I flussi di lavoro Quantum spesso richiedono molto tempo per essere completati e possono essere eseguiti in più sessioni. Il riavvio del kernel Python comporta la perdita dei risultati memorizzati. Per evitare la perdita di dati, è possibile salvare i risultati su file e recuperare i risultati dei lavori passati da IBM Quantum®, in modo che la sessione successiva possa continuare da dove è stata interrotta.


Recupera i risultati di lavoro da IBM Quantum

IBM Quantum memorizza automaticamente i risultati di ogni lavoro per poterli recuperare in un secondo momento. Questa funzione consente di continuare a utilizzare i programmi quantistici anche dopo il riavvio del kernel e di rivedere i risultati ottenuti in passato. È possibile ottenere l'ID di un lavoro in modo programmatico attraverso il suo metodo job_id , oppure è possibile vedere tutti i lavori inviati e i loro ID nella pagina Carichi di lavoro.

Per trovare un lavoro in modo programmatico, utilizzare il metodo QiskitRuntimeService.jobs metodo. Per impostazione predefinita, vengono visualizzati i lavori inviati più di recente, ma è anche possibile filtrare i lavori per nome del backend, data di creazione e altro ancora. La cella seguente individua i lavori presentati negli ultimi tre mesi. L'argomento created_after deve essere un datetime.datetime oggetto.

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

È inoltre possibile selezionare per backend, stato del lavoro, sessione e altro ancora. Per ulteriori informazioni, vedere QiskitRuntimeService.jobs nella documentazione dell'API.

Una volta ottenuto l'ID del lavoro, utilizzare il metodo QiskitRuntimeService.job per 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})

Salva i risultati su disco

Potresti anche voler salvare i risultati su disco. Per farlo, usa la libreria JSON integrata di Python con gli encoder di 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)

È quindi possibile caricare questo array dal disco in un kernel separato.

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})
Questa pagina è stata utile?
Segnala un bug, un errore di battitura o richiedi contenuti su GitHub.