주 콘텐츠로 건너뛰기

작업 결과 가져오기 및 저장하기

패키지 버전

이 페이지의 코드는 다음 요구 사항을 사용하여 개발되었습니다. 이 버전 이상을 사용해 주세요.

qiskit-ibm-runtime~=0.45.1

양자 워크플로우는 완료하는 데 시간이 걸리는 경우가 많으며 여러 세션에 걸쳐 실행될 수 있습니다. Python 커널을 재시작하면 메모리에 저장된 모든 결과가 손실됩니다. 데이터 손실을 방지하기 위해 결과를 파일에 저장하고, IBM Quantum®에서 이전 작업의 결과를 가져올 수 있어 다음 세션에서 이전 작업을 이어서 진행할 수 있습니다.

IBM Quantum에서 작업 결과 가져오기

IBM Quantum은 나중에 가져올 수 있도록 모든 작업의 결과를 자동으로 저장합니다. 이 기능을 사용하여 커널 재시작 간에도 양자 프로그램을 계속 실행하고 이전 결과를 검토할 수 있습니다. 작업의 ID는 job_id 메서드를 통해 프로그래밍 방식으로 확인하거나, 워크로드 페이지에서 제출한 모든 작업과 해당 ID를 확인할 수 있습니다.

작업을 프로그래밍 방식으로 찾으려면 QiskitRuntimeService.jobs 메서드를 사용하세요. 기본적으로 가장 최근에 제출된 작업이 반환되지만, Backend 이름, 생성 날짜 등으로 작업을 필터링할 수도 있습니다. 다음 셀은 지난 3개월 이내에 제출된 작업을 찾습니다. 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, 작업 상태, 세션 등으로도 선택할 수 있습니다. 자세한 내용은 API 문서의 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})

결과를 디스크에 저장하기

결과를 디스크에 저장하고 싶을 수도 있습니다. 이를 위해 Qiskit Runtime의 인코더와 함께 Python의 내장 JSON 라이브러리를 사용하세요.

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})