ดึงข้อมูลและบันทึกผลลัพธ์ของ Job
เวอร์ชันของแพ็กเกจ
โค้ดในหน้านี้พัฒนาโดยใช้ requirements ต่อไปนี้ แนะนำให้ใช้เวอร์ชันเหล่านี้หรือใหม่กว่า
qiskit-ibm-runtime~=0.45.1
Quantum workflow มักใช้เวลานานและอาจทำงานข้ามหลาย Session รีสตาร์ท Python kernel หมายความว่าผลลัพธ์ที่เก็บไว้ในหน่วยความจำจะหายไปทั้งหมด เพื่อป้องกันการสูญเสียข้อมูล สามารถบันทึกผลลัพธ์ลงไฟล์ และดึงผลลัพธ์ของ Job ที่ผ่านมาจาก IBM Quantum® ได้ เพื่อให้ Session ถัดไปทำงานต่อจากที่ค้างไว้
ดึงผลลัพธ์ Job จาก IBM Quantum
IBM Quantum เก็บผลลัพธ์ของทุก Job ไว้ให้โดยอัตโนมัติ เพื่อให้ดึงกลับมาได้ในภายหลัง ใช้ฟีเจอร์นี้เพื่อทำงานกับ quantum program ต่อเนื่องข้ามการรีสตาร์ท kernel และทบทวนผลลัพธ์ในอดีต สามารถรับ ID ของ Job แบบ programmatic ผ่าน method job_id หรือดูรายการ Job ที่ส่งทั้งหมดพร้อม ID ได้ที่ หน้า Workloads
ในการค้นหา Job แบบ programmatic ให้ใช้ method QiskitRuntimeService.jobs ค่าเริ่มต้นจะคืน Job ที่ส่งล่าสุด แต่ยังสามารถกรอง Job ตามชื่อ Backend วันที่สร้าง และอื่น ๆ ได้ด้วย cell ต่อไปนี้ค้นหา Job ที่ส่งในช่วงสามเดือนที่ผ่านมา โดย argument created_after ต้องเป็น object ประเภท 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')>]
ยังสามารถเลือกตาม Backend สถานะ Job Session และอื่น ๆ ได้อีก ดูข้อมูลเพิ่มเติมได้ที่ QiskitRuntimeService.jobs ในเอกสาร API
เมื่อได้ job ID แล้ว ให้ใช้ method QiskitRuntimeService.job เพื่อดึงข้อมูลกลับมา
# 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})
บันทึกผลลัพธ์ลงดิสก์
อาจต้องการบันทึกผลลัพธ์ลงดิสก์ด้วย ทำได้โดยใช้ไลบรารี JSON ในตัวของ Python ร่วมกับ encoder จาก 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)
จากนั้นสามารถโหลด array นี้จากดิสก์ใน kernel แยกต่างหากได้
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})