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) -> QCloudResultresult() 只在 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_id | str | 要取消的云任务 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()。