דלג לתוכן הראשי
פרויקט זה בשלב בטא. מצאת באג? פתח issue ב-GitHub. יש שאלה או רעיון? שאל ב-Discussions — נשמח לשמוע ממך!
מה איכות התרגום בדף זה?

אחזור ושמירת תוצאות עבודה

גרסאות חבילות

הקוד בדף זה פותח עם הדרישות הבאות. אנחנו ממליצים להשתמש בגרסאות אלה או חדשות יותר.

qiskit-ibm-runtime~=0.45.1

זרימות עבודה קוונטיות נמשכות לעיתים קרובות זמן רב ועשויות להתפרס על פני sessions רבים. אם תפעיל מחדש את ה-kernel של Python, כל התוצאות השמורות בזיכרון יאבדו. כדי למנוע אובדן נתונים, תוכל לשמור תוצאות לקובץ ולאחזר תוצאות של עבודות קודמות מ-IBM Quantum® כך שה-session הבא שלך יוכל להמשיך מהמקום שעצרת.

אחזור תוצאות עבודה מ-IBM Quantum​

IBM Quantum שומרת אוטומטית תוצאות מכל עבודה כדי שתוכל לאחזר אותן בתאריך מאוחר יותר. השתמש בתכונה זו כדי להמשיך תוכניות קוונטיות בין הפעלות מחדש של kernel ולסקור תוצאות קודמות. אתה יכול לקבל את ה-ID של עבודה באמצעות מתודת job_id שלה, או לראות את כל העבודות שהגשת ומזהיהן בדף Workloads.

כדי למצוא עבודה באופן תוכניתי, השתמש במתודה QiskitRuntimeService.jobs. כברירת מחדל, זה מחזיר את העבודות שהוגשו לאחרונה, אך אתה יכול גם לסנן עבודות לפי שם Backend, תאריך יצירה ועוד. התא הבא מוצא כל עבודה שהוגשה בשלושת החודשים האחרונים. ארגומנט created_after חייב להיות אובייקט 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')>]

אתה יכול גם לסנן לפי 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-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)

לאחר מכן תוכל לטעון מערך זה מהדיסק ב-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})