استرداد نتائج المهام وحفظها
Package versions
تم تطوير الكود في هذه الصفحة باستخدام المتطلبات التالية. ننصح باستخدام هذه الإصدارات أو أحدث.
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 — 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')>]
يمكنك أيضًا التصفية حسب الجهاز، وحالة المهمة، والجلسة، وغيرها. لمزيد من المعلومات، راجع 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 مع المُرمِّزات (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)
يمكنك بعدها تحميل هذه المصفوفة من القرص في نواة منفصلة.
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})