Skip to main content
IBM Quantum Platform

ジョブ結果を取得して保存する

  • このページのコードは、以下の要件に基づいて開発された。 これらのバージョンまたは新しいバージョンの使用をお勧めします。

    qiskit-ibm-runtime~=0.45.1
    

量子のワークフローは完了までに時間がかかることが多く、多くのセッションにわたって実行されることもある。 Python カーネルを再起動するということは、メモリに保存された結果を失うということです。 データの損失を避けるために、結果をファイルに保存し、 IBM Quantum® から過去のジョブの結果を取り出すことができます。


IBM Quantum からジョブ結果を取得する

IBM Quantumは、すべてのジョブの結果を自動的に保存し、後日取り出すことができます。 この機能を使用すると、カーネルの再起動をまたいで量子プログラムを継続し、過去の結果を確認することができます。 ジョブのIDは、 job_id メソッドからプログラムで取得することができます。また、 ワークロードのページで、提出されたすべてのジョブとそのIDを確認することもできます。

プログラムで仕事を見つけるには QiskitRuntimeService.jobs メソッドを使います。 デフォルトでは、これは最近送信されたジョブを返しますが、バックエンド名、作成日などでジョブをフィルタリングすることもできます。 次のセルは、過去3ヶ月間に提出された求人情報を検索します。 created_after 引数は datetime.datetime オブジェクトでなければなりません。

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

Output:

[<RuntimeJobV2('d762oo5bjrds73ed2u80', 'estimator')>,
 <RuntimeJobV2('d762omnq1anc738d2cj0', 'sampler')>,
 <RuntimeJobV2('d762oma3qcgc73fse6dg', 'sampler')>]

バックエンド、ジョブの状態、セッションなどで選択することもできます。 詳細については、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)

Output:

d762omnq1anc738d2cj0
retrieved_job = service.job(job_id)
retrieved_job.result()

Output:

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

Output:

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})
このページは役に立ちましたか?
バグや誤字の報告、またはコンテンツの要求はGitHubで行ってください。