Ambil semula dan simpan keputusan kerja
Versi pakej
Kod pada halaman ini dibangunkan menggunakan keperluan berikut. Kami mengesyorkan penggunaan versi ini atau yang lebih baharu.
qiskit-ibm-runtime~=0.45.1
Aliran kerja kuantum sering mengambil masa yang lama untuk diselesaikan dan boleh berjalan merentas banyak sesi. Memulakan semula kernel Python bermakna anda akan kehilangan sebarang keputusan yang tersimpan dalam ingatan. Untuk mengelakkan kehilangan data, anda boleh menyimpan keputusan ke fail dan mengambil semula keputusan kerja lampau dari IBM Quantum® supaya sesi seterusnya boleh meneruskan dari mana anda berhenti.
Ambil semula keputusan kerja dari IBM Quantum
IBM Quantum secara automatik menyimpan keputusan dari setiap kerja untuk anda ambil semula kemudian hari. Gunakan ciri ini untuk meneruskan program kuantum merentas permulaan semula kernel dan menyemak keputusan lampau. Anda boleh mendapatkan ID kerja secara aturcara melalui kaedah job_id-nya, atau anda boleh melihat semua kerja yang telah anda hantar beserta ID-nya pada halaman Beban Kerja.
Untuk mencari kerja secara aturcara, gunakan kaedah QiskitRuntimeService.jobs. Secara lalai, ini mengembalikan kerja yang paling baru dihantar, tetapi anda juga boleh menapis kerja mengikut nama Backend, tarikh penciptaan, dan banyak lagi. Sel berikut mencari sebarang kerja yang dihantar dalam tiga bulan terakhir. Argumen created_after mestilah objek 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')>]
Anda juga boleh memilih mengikut Backend, status kerja, Session, dan banyak lagi. Untuk maklumat lanjut, lihat QiskitRuntimeService.jobs dalam dokumentasi API.
Setelah anda mempunyai ID kerja, gunakan kaedah QiskitRuntimeService.job untuk mengambilnya semula.
# 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 keputusan ke cakera
Anda mungkin juga mahu menyimpan keputusan ke cakera. Untuk melakukan ini, gunakan pustaka JSON terbina dalam Python dengan pengekod dari 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)
Anda kemudian boleh memuatkan tatasusunan ini dari cakera dalam kernel yang berasingan.
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})