אחזור ושמירת תוצאות עבודה
גרסאות חבילות
הקוד בדף זה פותח עם הדרישות הבאות. אנחנו ממליצים להשתמש בגרסאות אלה או חדשות יותר.
qiskit-ibm-runtime~=0.45.1
זרימות עבודה קוונטיות לוקחות לעיתים קרובות זמן רב להשלים ויכולות לרוץ על פני sessions רבים. הפעלה מחדש של Python kernel שלך פירושה שתאבד כל תוצאה מאוחסנת בזיכרון. כדי למנוע אובדן נתונים, תוכל לשמור תוצאות לקובץ ולאחזר תוצאות של עבודות קודמות מ-IBM Quantum® כך שה-session הבא שלך יוכל להמשיך מהמקום שעצרת.
אחזור תוצאות עבודה מ-IBM Quantum
IBM Quantum שומרת אוטומטית תוצאות מכל עבודה כדי שתוכל לאחזר אותן בתאריך מאוחר יותר. השתמש בתכונה זו כדי להמשיך תוכניות קוונטיות בין הפעלות מחדש של kernel ולסקור תוצאות קודמות. אתה יכול לקבל את ה-ID של עבודה באמצעות מתודת job_id שלה, או לראות את כל העבודות שהגשת ומזהיהן בדף Workloads.
כדי למצוא עבודה באופן תוכניתי, השתמש במתודה QiskitRuntimeService.jobs. כברירת מחדל, זה מחזיר את העבודות שהוגשו לאחרונה, אך אתה יכול גם לסנן עבודות לפי שם Backend, תאריך יצירה ועוד. התא הבא מוצא כל עבודה שהוגשה בשלושת החודשים האחרונים. ארגומנט created_after חייב להיות אובייקט 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, מצב עבודה, session ועוד. למידע נוסף, ראה QiskitRuntimeService.jobs בתיעוד ה-API.
לאחר שיש לך את ה-job ID, השתמש במתודה 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 עם encoders מ-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)
לאחר מכן תוכל לטעון מערך זה מהדיסק ב-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})