Перейти до основного вмісту
Цей проєкт у бета-версії. Знайшов(-ла) помилку? Відкрити issue на GitHub. Є запитання чи ідея? Запитати в Discussions — будемо раді твоєму відгуку!
Яка якість перекладу на цій сторінці?

Отримання та збереження результатів завдань

Версії пакетів

Код на цій сторінці розроблявся з використанням таких залежностей. Рекомендуємо використовувати ці або новіші версії.

qiskit-ibm-runtime~=0.45.1

Квантові робочі процеси часто виконуються досить довго і можуть охоплювати кілька сесій. Перезапуск Python-ядра призводить до втрати будь-яких результатів, збережених у пам'яті. Щоб уникнути втрати даних, можна зберігати результати у файл і отримувати результати минулих завдань з IBM Quantum® — тоді наступна сесія продовжиться з того місця, де зупинилася попередня.

Отримання результатів завдань з IBM Quantum​

IBM Quantum автоматично зберігає результати кожного завдання, щоб ти міг отримати їх пізніше. Використовуй цю функцію для продовження квантових програм після перезапуску ядра та перегляду минулих результатів. Ти можеш отримати ID завдання програмно через метод job_id, або переглянути всі надіслані завдання та їх 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.

Маючи 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})

Збереження результатів на диск​

Ти також можеш зберігати результати на диск. Для цього використовуй вбудовану в Python бібліотеку json разом з енкодерами з 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})