Managing Quantum Computing Tasks
April 16, 2026 ยท View on GitHub
This guide covers how to submit and manage quantum computing tasks.
Available Tools
| Tool | Description |
|---|---|
sample_tool | Execute quantum circuit sampling |
estimate_tool | Execute expectation estimation |
batch_sample_tool | Batch sampling with multiple circuits |
batch_estimate_tool | Batch estimation with multiple circuits |
get_task_status_tool | Check task status |
get_task_results_tool | Retrieve task results |
cancel_task_tool | Cancel a running task |
list_my_tasks_tool | List recent tasks |
Sampling Tasks
Sampling executes a quantum circuit multiple times and returns measurement outcomes.
Basic Sampling
circuit = """QINIT 2
CREG 2
H q[0]
CNOT q[0],q[1]
MEASURE q[0],c[0]
MEASURE q[1],c[1]"""
result = await sample_tool(
circuit=circuit,
device_id="20",
shots=1000
)
task_id = result["task_id"]
Batch Sampling
Submit multiple circuits at once:
circuits = [
"QINIT 2\nCREG 2\nH q[0]\nCNOT q[0],q[1]\nMEASURE q[0],c[0]\nMEASURE q[1],c[1]",
"QINIT 2\nCREG 2\nX q[0]\nCNOT q[0],q[1]\nMEASURE q[0],c[0]\nMEASURE q[1],c[1]"
]
result = await batch_sample_tool(
circuits=circuits,
device_id="20",
shots=1000
)
Estimation Tasks
Estimation computes the expectation value of an observable.
Basic Estimation
# Circuit WITHOUT measurements
circuit = """QINIT 2
CREG 2
H q[0]
CNOT q[0],q[1]"""
# Observable as dictionary
observable = {"Z0 Z1": 1.0}
result = await estimate_tool(
circuit=circuit,
observable=observable,
device_id="20"
)
Batch Estimation
Multiple circuits with one observable:
circuits = [
"QINIT 2\nCREG 2\nH q[0]\nCNOT q[0],q[1]",
"QINIT 2\nCREG 2\nX q[0]\nCNOT q[0],q[1]"
]
result = await batch_estimate_tool(
circuits=circuits,
observable={"Z0 Z1": 1.0},
device_id="20"
)
Task Status
Checking Status
status = await get_task_status_tool(task_id="task_12345")
print(f"Status: {status['task_status']}")
print(f"Progress: {status.get('progress', 'unknown')}")
Task Status Values
| Status | Description |
|---|---|
PENDING | Waiting in queue |
RUNNING | Currently executing |
DONE | Completed successfully |
FAILED | Execution failed |
CANCELLED | Cancelled by user |
Retrieving Results
# First check if done
status = await get_task_status_tool(task_id)
if status["task_status"] == "DONE":
results = await get_task_results_tool(task_id)
# For sampling tasks
for outcome in results["results"]:
print(f"Outcome: {outcome['key']}")
print(f"Probability: {outcome['value']}")
Sampling Results Format
{
"status": "success",
"task_id": "task_12345",
"task_status": "DONE",
"results": [
{
"key": ["0x0", "0x1", "0x2", "0x3"],
"value": [0.002, 0.036, 0.044, 0.918]
}
]
}
Cancelling Tasks
result = await cancel_task_tool(task_id="task_12345")
if result["status"] == "success":
print("Task cancelled successfully")
Listing Tasks
tasks = await list_my_tasks_tool(limit=10)
for task in tasks["tasks"]:
print(f"Task: {task['task_id']}")
print(f"Status: {task['status']}")
print(f"Created: {task['creation_date']}")
Complete Workflow
# 1. Submit task
result = await sample_tool(
circuit=circuit,
device_id="20",
shots=1000
)
task_id = result["task_id"]
print(f"Submitted: {task_id}")
# 2. Poll for completion
import asyncio
while True:
status = await get_task_status_tool(task_id)
print(f"Status: {status['task_status']}")
if status["task_status"] == "DONE":
break
elif status["task_status"] == "FAILED":
print("Task failed!")
break
await asyncio.sleep(5) # Wait before polling again
# 3. Get results
results = await get_task_results_tool(task_id)
print(f"Results: {results['results']}")