استرداد نتائج المهام وحفظها
Package versions
The code on this page was developed using the following requirements. We recommend using these versions or newer.
qiskit-ibm-runtime~=0.45.1
كثيرًا ما تستغرق سير عمل الحوسبة الكمومية وقتًا طويلاً وقد تمتد عبر جلسات متعددة. إذا أعدت تشغيل نواة Python، ستفقد أي نتائج مخزّنة في الذاكرة. لتجنب ضياع البيانات، يمكنك حفظ النتائج في ملف واسترداد نتائج المهام السابقة من IBM Quantum®، حتى تتمكن جلستك القادمة من الاستمرار من حيث توقفت.
استرداد نتائج المهام من IBM Quantum
يحتفظ IBM Quantum تلقائيًا بنتائج كل مهمة لتتمكن من استردادها لاحقًا. استخدم هذه الميزة لمتابعة برامجك الكمومية عبر إعادات تشغيل النواة ومراجعة النتائج السابقة. يمكنك الحصول على معرّف المهمة برمجيًا عبر طريقة job_id، أو يمكنك الاطل اع على جميع مهامك المُرسَلة ومعرّفاتها في صفحة Workloads.
للبحث عن مهمة برمجيًا، استخدم طريقة QiskitRuntimeService.jobs. تُعيد هذه الطريقة افتراضيًا أحدث المهام المُرسَلة، لكن يمكنك أيضًا تصفيتها حسب اسم الجهاز، وتاريخ الإنشاء، وغير ذلك. تجد في الخلية التالية كيفية البحث عن أي مهام أُرسلت خلال الثلاثة أشهر الماضية. يجب أن تكون قيمة المعامل 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')>]
يمكنك أيضًا التصفية حسب الجهاز، وحالة المهمة، والجلسة، وغيرها. لمزيد من المعلومات، راجع QiskitRuntimeService.jobs في توثيق API.
بمجرد حصولك على معرّف المهمة، استخدم طريقة 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 مع المُشفِّرات المتوفرة في 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)
يمكنك بعدها تحميل هذه المصفوفة من القرص في نواة منفصلة.
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})