Session#

class Session(max_time=None)[source]#

Class for creating a flexible Qiskit Runtime session.

A Qiskit Runtime session allows you to group a collection of iterative calls to the quantum computer. A session is started when the first job within the session is started. Subsequent jobs within the session are prioritized by the scheduler. Data used within a session, such as transpiled circuits, is also cached to avoid unnecessary overhead.

You can open a Qiskit Runtime session using this Session class and submit one or more jobs.

For example:

from qiskit.test.reference_circuits import ReferenceCircuits
from qiskit_ibm_provider import IBMProvider

circ = ReferenceCircuits.bell()
backend = IBMProvider().get_backend("ibmq_qasm_simulator")
backend.open_session()
job = backend.run(circ)
print(f"Job ID: {job.job_id()}")
print(f"Result: {job.result()}")
# Close the session only if all jobs are finished and
# you don't need to run more in the session.
backend.cancel_session()

Session can also be used as a context manager:

with backend.open_session() as session:
    job = backend.run(ReferenceCircuits.bell())
    assert job.job_id() == session.session_id

Session constructor.

Parameters:

max_time (Union[int, str, None]) – (EXPERIMENTAL setting, can break between releases without warning) Maximum amount of time, a runtime session can be open before being forcibly closed. Can be specified as seconds (int) or a string like ā€œ2h 30m 40sā€. This value must be in between 300 seconds and the system imposed maximum.

Raises:

ValueError – If an input value is invalid.

Attributes

Session.active

Return the status of the session.

Session.session_id

Return the session ID.

Methods

Session.cancel()

Set the session._active status to False