Monitorowanie lub anulowanie zadania
Wyświetl listę swoich zadań na stronie Obciążenia.
Sprawdź status zadania
Przejdź do tabeli Obciążenia i sprawdź kolumnę Status, aby zobaczyć, czy zadanie zostało ukończone czy zakończyło się błędem.
Sprawdź pozostałe wykorzystanie
Przejdź do tabeli Instancje i wybierz kartę odpowiadającą planowi, dla którego chcesz sprawdzić pozostałe wykorzystanie. Wyświetlany jest całkowity czas wykorzystany oraz całkowity czas pozostały w ramach planu.
Przeglądaj metryki liczby przesłanych zadań i obciążeń
Przejdź na stronę Analityka, aby zobaczyć całkowitą liczbę przesłanych zadań, a także liczbę obciążeń wsadowych i obciążeń Session. Pamiętaj, że stronę Analityka możesz zobaczyć tylko dla kont, których jesteś właścicielem lub którymi zarządzasz.
Monitoruj zadanie
Użyj instancji zadania, aby sprawdzić jego status lub pobrać wyniki, wywołując odpowiednie polecenie:
| job.result() | Przeglądaj wyniki zadania natychmiast po jego ukończeniu. Wyniki zadania są dostępne po jego zakończeniu. Dlatego job.result() jest wywołaniem blokującym aż do ukończenia zadania. |
| job.job_id() | Zwraca identyfikator jednoznacznie identyfikujący dane zadanie. Pobranie wyników zadania w późniejszym czasie wymaga identyfikatora zadania. Zaleca się więc zapisywanie identyfikatorów zadań, które możesz chcieć pobrać później. |
| job.status() | Sprawdza status zadania. |
| job = service.job(<job_id>) | Pobiera zadanie, które wcześniej przesłałeś(-aś). To wywołanie wymaga identyfikatora zadania. |
Pobierz wyniki zadania w późniejszym czasie
Wywołaj service.job(\<job\_id>), aby pobrać zadanie, które wcześniej przesłałeś(-aś). Jeśli nie masz identyfikatora zadania lub chcesz pobrać wiele zadań naraz — w tym zadania z wycofanych QPU (jednostek przetwarzania kwantowego) — wywołaj zamiast tego service.jobs() z opcjonalnymi filtrami. Zobacz QiskitRuntimeService.jobs.
service.jobs() zwraca również zadania uruchomione za pomocą wycofanego pakietu qiskit-ibm-provider. Zadania przesłane przez starszy (również wycofany) pakiet qiskit-ibmq-provider nie są już dostępne.
Przykład
Ten przykład zwraca 10 ostatnich zadań runtime uruchomionych na my_backend:
# Added by doQumentation — required packages for this notebook
!pip install -q numpy qiskit qiskit-ibm-runtime
# This cell is hidden from users
from qiskit import QuantumCircuit
from qiskit.circuit import Parameter
from qiskit.transpiler import generate_preset_pass_manager
from qiskit_ibm_runtime import QiskitRuntimeService, SamplerV2
import numpy as np
my_backend = "ibm_torino"
service = QiskitRuntimeService()
# backend = service.backend(my_backend)
backend = service.least_busy()
# Define two circuits, each with one parameter with two parameters.
circuit = QuantumCircuit(2)
circuit.h(0)
circuit.cx(0, 1)
circuit.ry(Parameter("a"), 0)
circuit.cx(0, 1)
circuit.h(0)
circuit.measure_all()
pm = generate_preset_pass_manager(optimization_level=1, backend=backend)
transpiled_circuit = pm.run(circuit)
params = np.random.uniform(size=(2, 3)).T
sampler_pub = (transpiled_circuit, params)
# Instantiate the new estimator object, then run the transpiled circuit
# using the set of parameters and observables.
sampler = SamplerV2(mode=backend)
job = sampler.run([sampler_pub], shots=4)
print(job.job_id())
d305ck0ocacs73ajagvg
result = job.result()
spans = job.result().metadata["execution"]["execution_spans"]
print(spans)
ExecutionSpans([DoubleSliceSpan(<start='2025-09-09 16:31:16', stop='2025-09-09 16:31:16', size=24>)])
params = np.random.uniform(size=(2, 3))
params
array([[0.2260416 , 0.8747859 , 0.44361995],
[0.94700856, 0.96826017, 0.98426562]])
mask = spans[0].mask(0)
mask
array([[[ True, True, True, True],
[ True, True, True, True]],
[[ True, True, True, True],
[ True, True, True, True]],
[[ True, True, True, True],
[ True, True, True, True]]])
from qiskit_ibm_runtime import QiskitRuntimeService
# Initialize the account first.
service = QiskitRuntimeService()
# Use `limit` to retrieve a specific number of jobs. The default `limit` is 10.
service.jobs(backend_name=my_backend)
Anuluj zadanie
Możesz anulować zadanie z poziomu panelu IBM Quantum Platform — na stronie Obciążenia lub na stronie szczegółów konkretnego obciążenia. Na stronie Obciążenia kliknij menu przepełnienia na końcu wiersza danego obciążenia i wybierz Anuluj. Jeśli jesteś na stronie szczegółów konkretnego obciążenia, użyj listy rozwijanej Akcje u góry strony i wybierz Anuluj.
W Qiskit użyj job.cancel(), aby anulować zadanie.
Wyświetl zakresy wykonania Sampler
Wyniki zadań SamplerV2 wykonanych w Qiskit Runtime zawierają informacje o czasie wykonania w swoich metadanych.
Te informacje o czasie mogą być używane do określenia górnych i dolnych granic czasowych wskazujących, kiedy poszczególne strzały zostały wykonane na QPU.
Strzały są grupowane w obiekty ExecutionSpan, z których każdy wskazuje czas rozpoczęcia, czas zakończenia oraz specyfikację, które strzały zostały zebrane w danym zakresie.
Zakres wykonania określa, jakie dane zostały wykonane w jego oknie czasowym, udostępniając metodę ExecutionSpan.mask. Ta metoda, dla dowolnego indeksu Primitive Unified Block (PUB), zwraca maskę logiczną z wartością True dla wszystkich strzałów wykonanych w danym oknie. PUB-y są indeksowane według kolejności, w jakiej zostały przekazane do wywołania Sampler run. Jeśli na przykład PUB ma kształt (2, 3) i został uruchomiony z czterema strzałami, kształt maski wynosi (2, 3, 4). Zobacz stronę API execution_span, aby uzyskać pełne szczegóły.
Przykład:
Aby wyświetlić informacje o zakresach wykonania, przejrzyj metadane wyników zwróconych przez SamplerV2, które mają postać obiektu ExecutionSpans. Ten obiekt jest kontenerem podobnym do listy, zawierającym instancje podklas ExecutionSpan, takich jak SliceSpan:
from qiskit.primitives import BitArray
# Get the mask of the 1st PUB for the 0th span.
mask = spans[0].mask(0)
# Decide whether the 0th shot of parameter set (1, 2) occurred in this span.
in_this_span = mask[2, 1, 0]
# Create a new bit array containing only the PUB-1 data collected during this span.
bits = result[0].data.meas
filtered_data = BitArray(bits.array[mask], bits.num_bits)
Zakresy wykonania można filtrować, aby uwzględniały informacje dotyczące konkretnych PUB-ów, wybranych według ich indeksów:
# take the subset of spans that reference data in PUBs 0 or 2
spans.filter_by_pub([0, 2])
ExecutionSpans([DoubleSliceSpan(<start='2025-09-09 16:31:16', stop='2025-09-09 16:31:16', size=24>)])
Wyświetl globalne informacje o zbiorze zakresów wykonania:
print("Number of execution spans:", len(spans))
print(" Start of the first span:", spans.start)
print(" End of the last span:", spans.stop)
print(" Total duration (s):", spans.duration)
Number of execution spans: 1
Start of the first span: 2025-09-09 16:31:16.320568
End of the last span: 2025-09-09 16:31:16.865858
Total duration (s): 0.54529
Wyodrębnij i sprawdź konkretny zakres:
spans.sort()
print(" Start of first span:", spans[0].start)
print(" End of first span:", spans[0].stop)
print("#shots in first span:", spans[0].size)
Start of first span: 2025-09-09 16:31:16.320568
End of first span: 2025-09-09 16:31:16.865858
#shots in first span: 24
Możliwe jest, że okna czasowe określone przez różne zakresy wykonania pokrywają się. Nie wynika to z faktu, że QPU wykonywało wiele operacji jednocześnie, lecz jest artefaktem pewnego przetwarzania klasycznego, które może odbywać się współbieżnie z wykonaniem kwantowym. Gwarancja polega na tym, że przywoływane dane na pewno wystąpiły w podanym zakresie wykonania, ale niekoniecznie oznacza to, że granice okna czasowego są jak najbardziej ścisłe.
Następne kroki
- Wypróbuj samouczek Algorytm Grovera.