Skip to content

QCloudResult ​

QCloudResult 保存解析后的任务输出,以及云服务可选返回的原始字段。

签名 ​

python
QCloudResult(cloud_job_id: str, result_string: str)

实际使用中通常直接消费 QCloudJob.query() 或 QCloudJob.result() 返回的对象。

常规结果接口 ​

方法签名说明
get_probsget_probs(base: DataBase = DataBase.Binary) -> dict[str, float]概率字典。
get_countsget_counts(base: DataBase = DataBase.Binary) -> dict[str, int]计数字典。
get_probs_listget_probs_list(base: DataBase = DataBase.Binary) -> list[dict[str, float]]批量概率输出。
get_counts_listget_counts_list(base: DataBase = DataBase.Binary) -> list[dict[str, int]]批量计数输出。
get_amplitudesget_amplitudes() -> dict[str, complex]振幅任务结果。
get_state_fidelityget_state_fidelity() -> float量子态层析保真度。
get_state_tomography_densityget_state_tomography_density() -> list[list[complex]]量子态层析密度矩阵。
origin_dataorigin_data() -> str原始 JSON 结果字符串。
job_idjob_id() -> str任务 id。
job_statusjob_status() -> JobStatus结果中带回的任务状态。
error_messageerror_message() -> str任务失败时的错误文本。

job_status() 返回结果中带回的状态;FAILED 是终态。失败任务不再通过异常表达,error_message() 优先返回 obj.errInfo,其次 message,最后 errCode。服务端报告的任务失败通过 JobStatus.FAILED 与 error_message() 表达;网络、协议或 HTTP 等传输层错误仍可能从底层请求抛出,完整契约见 QCloudJob.result()。

原始字段访问 ​

pyqpanda3 0.4.0 源码绑定中,QCloudResult 既能返回完整原始 JSON,也能读取通过 job.result(keys=...) / job.query(keys=...) 请求到的原始字段。下表展示 QCloud JSON 字段名(用于 keys= 请求和成员检查)与 Python 访问方法的映射关系。

QCloud JSON 字段Python 方法说明
convertQProginstructions()云端转换后的指令流。
qprogqprog()提交到云端的原始 QProg 数据。
mappingQprogmapping_qprog()服务端量子比特映射后的 QProg。
mappingQubitmapping_qubit()虚拟比特到物理比特的映射关系。
srcQubitssrc_qubits()任务中使用的源量子比特索引。
targetCbitstarget_cbits()目标经典比特索引。
measureQubitsmeasure_qubits()执行测量的量子比特索引。
probCountprob_count_raw()后端返回的原始概率计数数据。

也可以使用字段名或 snake_case 别名做通用访问:

python
"mappingQprog" in result
raw_mapping = result["mappingQprog"]

需要完整排障时,继续使用 origin_data() 获取服务端原始 JSON 字符串。

timing_info ​

python
timing_info() -> dict[str, str]

返回服务端结果中与时间相关的字段,例如 startTime、totalTime、pulseTime、qpuRunTime、compileTime、queueTime。

它不是固定结构。不同 QPU、模拟器和任务类型返回的键集合不同。

示例 ​

python
from pyqpanda3.core import H, QProg, measure
from pyqpanda3.qcloud import DataBase, QCloudService

service = QCloudService("your_api_key")
backend = service.backend("full_amplitude")
prog = QProg()
prog << H(0) << measure(0, 0)
job = backend.run(prog, shots=1000)

result = job.result(keys=["mappingQprog", "mappingQubit", "probCount"])

print(result.get_probs(base=DataBase.Binary))
print("mappingQprog" in result)
print(result.mapping_qubit() if "mappingQubit" in result else "")
print(result.timing_info())
print(result.origin_data()[:200])

示例输出形态:

text
{'0x0': 0.501, '0x1': 0.499}
True
{"0": 1}
{'totalTime': '...', 'qpuRunTime': '...'}
{"success":true,"code":10000,...

说明 ​

  • 原始字段只有在服务端实际返回时才可读取。访问缺失字段时会抛出异常;先用 "field" in result 判断更稳妥。
  • timing_info() 是动态提取的,不同 QPU、模拟器和层析任务返回的键集合可能不同。

另见 ​

Released under the MIT License.