Skip to content

QCloudJob ​

QCloudJob 用于跟踪一个已提交的云任务。

签名 ​

python
QCloudJob(job_id: str)

大多数情况下你会从 QCloudBackend.run() 或 run_instruction() 拿到这个对象,而不是直接构造。也可以用任务 ID 直接调用构造器,重新关联一个先前提交的任务并查询、获取其结果。

方法 ​

job_id ​

python
job_id() -> str

返回云任务 id。

status ​

python
status() -> JobStatus

返回最新的任务生命周期状态。

query ​

python
query(keys: str | list[str] | None = None, key: str | None = None) -> QCloudResult

查询任务的最新元数据,不会等待最终执行完成。

result ​

python
result(keys: str | list[str] | None = None, key: str | None = None) -> QCloudResult

result() 只在 WAITING / COMPUTING / QUEUING 状态继续轮询,FINISHED / FAILED 会立即返回。任务失败时返回 QCloudResult,其 job_status() 为 JobStatus.FAILED,error_message() 给出失败原因;服务端报告的任务失败不再抛出 RuntimeError(网络/协议/HTTP 错误仍可能抛出)。

cancel ​

python
cancel() -> bool

取消当前云任务。返回 True 表示云服务接受了取消请求;返回 False 表示服务端响应任务无法取消。

cancel_task ​

python
cancel_task(task_id: str) -> bool

按任务 id 取消一个云任务(静态方法,通过 QCloudJob 类调用)。调用前需要先初始化 QCloudService,使 SDK 持有云端 URL 与鉴权信息。

参数 ​

参数类型说明
task_idstr要取消的云任务 id。

返回 ​

True 表示云服务接受了取消请求;False 表示服务端响应任务无法取消。

NOTE

额外原始字段

pyqpanda3 0.4.0 源码绑定支持 keys= 或 key=。二者不能同时传入。 常用字段包括 mappingQprog、mappingQubit、probCount、convertQProg、srcQubits、targetCbits 和 measureQubits。

示例 ​

python
from pyqpanda3.core import H, QProg, measure
from pyqpanda3.qcloud import JobStatus, 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)
print(job.job_id())
print(job.status())

result = job.result(keys=["mappingQprog", "mappingQubit", "probCount"])
print(result.job_status())
print(result.get_probs())
print(result.mapping_qubit() if "mappingQubit" in result else "")
print(result.timing_info())

示例输出形态:

text
JOB_ID
JobStatus.WAITING
JobStatus.FINISHED
{'0x0': 0.5, '0x1': 0.5}
{"0": 1}
{'totalTime': 1234, ...}

失败任务的检查方式:

python
if result.job_status() == JobStatus.FAILED:
    print("failed:", result.error_message())
else:
    print(result.get_probs())

取消任务需要云端凭据与真实任务,无法本地执行:

python
from pyqpanda3.qcloud import QCloudJob, QCloudService

# 需云端凭据与真实任务,无法本地执行
service = QCloudService("your_api_key")
job = QCloudJob("your_job_id")

print(job.cancel())                          # 取消当前任务
print(QCloudJob.cancel_task("your_task_id"))  # 按任务 id 取消(静态方法)

说明 ​

  • query() 返回任务当前元数据;result() 等待任务完成并返回最终结果。
  • keys 可传字符串或字符串列表;key 是单字段便捷参数。调试完整服务端响应时仍可使用 QCloudResult.origin_data()。

另见 ​

Released under the MIT License.