Ambil dan simpan hasil job
Versi paket
Kode di halaman ini dikembangkan menggunakan persyaratan berikut. Kami merekomendasikan menggunakan versi ini atau yang lebih baru.
qiskit-ibm-runtime~=0.45.1
Alur kerja quantum seringkali membutuhkan waktu lama untuk selesai dan bisa berjalan di banyak sesi. Kalau Anda me-restart kernel Python, semua hasil yang tersimpan di memori akan hilang. Untuk menghindari kehilangan data, Anda bisa menyimpan hasil ke file dan mengambil hasil job-job sebelumnya dari IBM Quantum® sehingga sesi berikutnya bisa melanjutkan dari tempat yang terakhir Anda tinggalkan.
Ambil hasil job dari IBM Quantum
IBM Quantum secara otomatis menyimpan hasil dari setiap job agar bisa Anda ambil kapan saja. Gunakan fitur ini untuk melanjutkan program quantum setelah kernel di-restart dan meninjau hasil-hasil sebelumnya. Kamu bisa mendapatkan ID sebuah job secara programatik melalui metode job_id-nya, atau Anda bisa melihat semua job yang sudah Anda kirimkan beserta ID-nya di halaman Workloads.
Untuk mencari job secara programatik, gunakan metode QiskitRuntimeService.jobs. Secara default, ini mengembalikan job-job yang paling baru dikirimkan, tapi Anda juga bisa memfilter job berdasarkan nama Backend, tanggal pembuatan, dan lainnya. Cell berikut mencari job yang dikirimkan dalam tiga bulan terakhir. Argumen created_after harus berupa objek datetime.datetime.
# Added by doQumentation — required packages for this notebook
!pip install -q qiskit-ibm-runtime
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')>]
Kamu juga bisa memilih berdasarkan Backend, status job, Session, dan lainnya. Untuk informasi lebih lanjut, lihat QiskitRuntimeService.jobs di dokumentasi API.
Setelah Anda punya ID job, gunakan metode QiskitRuntimeService.job untuk mengambilnya.
# 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})
Simpan hasil ke disk
Kamu mungkin juga ingin menyimpan hasil ke disk. Untuk melakukannya, gunakan library JSON bawaan Python dengan encoder dari 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)
Kamu kemudian bisa memuat array ini dari disk di kernel yang berbeda.
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})