结果与常见问题
读取需要的结果
以下 Qiskit 代码使用提交时返回的 job 读取结果。Core 读取下载结果的 primary_value;PennyLane 读取 QNode 或 prepared.result() 的返回值。
result = job.result(timeout=300)
counts = result.get_counts()
counts
counts 用字典表示测量计数:键是测量位串,值是出现次数。对比两份结果时,使用相同任务、shots 和测量位序;概率与计数分别按各自的结果类型读取。
等待超时后继续查询原任务
Backend 任务可使用 job.result(timeout=300, wait=2):timeout 是一次等待的总预算,wait 是轮询间隔。prepare/run 中的 job_timeout_seconds 设置后续 result() 的默认预算;显式 timeout 可覆盖该值,计时从 result() 开始。run 确认提交后返回任务句柄,result() 负责等待计算结果。
TimeoutError 表示本次等待时间用完,任务仍按平台当前状态处理。保留 job 或 prepared,稍后再次运行结果查询代码即可继续等待同一个任务。
# 等待一段时间后,对原 job 再查询
result = job.result(timeout=300)
result.get_counts()
平台发送阶段可通过 submission_ids 跟踪进度:调用 service.scheduler.get_submission(submission_id)。取得 platform_job_ids 后,可用 service.scheduler.get_job(job_id) 查询计算状态。下面读取当前句柄中的两类标识。
getattr(job, "submission_ids", ()), job.platform_job_ids
常见情况与下一步
| 情况 | 怎么处理 |
|---|---|
| 无法连接平台 | 检查平台 API 地址和网络连接。 |
| 认证或权限被拒绝 | 检查平台 Client ID / Client Secret,以及账号的设备使用权限。 |
| 报价过期 | 对尚未确认执行的实验重新准备,查看并确认新报价。已发送的任务继续查询原记录。 |
| HTTP 402 / 所选钱包余额不足 | 检查所选钱包的可用余额;若改用 FULL,创建 FULL 客户端重新准备并审阅新报价。批次此前已接受的任务继续执行。 |
| currency 参数不被接受 | 核对当前 SDK 版本,并在创建客户端或独立设备时设置 currency。 |
| PennyLane 的钱包设置冲突 | 注入 scheduler 时省略 currency 以继承,或传相同值;需要另一个钱包则新建对应 scheduler 和设备。 |
| 任务名额已满 | 等待组织中已有任务完成,释放名额后再提交。 |
| 发送结果尚未确认 | 使用原提交号查询发送进度。需要协助时提供原提交号和 Request ID。 |
| 状态或结果暂不可读 | 稍后查询同一任务并再次读取结果。 |
| 任务确认失败或取消 | 查看任务状态和错误提示,按返回信息处理。 |
程序可捕获 quantum_source_sdk.APIError。PlatformSubmissionError 表示发送结果需要进一步核实,ProviderSubmissionError 是其提供厂商公开错误说明的子类。遇到这类情况,保留原提交号并查询原记录;联系支持时提供错误提示、任务或提交号和 Request ID。
HTTP 402 表示该次确认在余额检查阶段停止,线路尚未发送。切换钱包时使用对应客户端准备新报价。发送结果待核实的任务继续通过原提交号查询。
保留原准备对象
按准备对象的类型选择恢复入口。下表中的操作用于查询已尝试提交的任务,批次尚未提交的部分保留待处理状态。
| 准备对象 | 查询原提交 | 继续等待 |
|---|---|---|
| Qiskit prepared | prepared.recover() | 取得任务句柄后调用 job.result(timeout=300);发送待核实时继续查询提交回执。 |
| Core 单条 PreparedSubmission | prepared.recover(),返回 SubmissionReceipt | scheduler.wait_for_submission(prepared.preparation.id, timeout_seconds=300)。 |
| Core PreparedBatch | batch.recover(wait=False) | batch.recover(wait=True, timeout=300)。 |
| PennyLane PreparedPennyLaneBatch | prepared.recover(wait=False) | prepared.result(timeout=300) 等待并还原测量结果;也可 recover(wait=True, timeout=300) 查询原批次。 |
用户停止等待后
后台同步服务持续运行时,平台会继续查询任务状态并保存结果。用户结束客户端等待后,可在下次连接时凭原任务号读取进度和结果。后台同步的运行情况由平台管理员维护。
分享错误时保护凭据
向管理员提供错误提示、Request ID 和自己的任务或提交号即可。分享截图或 Notebook 前,请将账号凭据保留在本机凭据配置中。
下载本页 Jupyter Notebook
收录本页 Python 示例与说明,便于在 Jupyter Notebook 中学习和运行;安装命令保留为说明。