Experiment Run Scheduler
The run scheduling mechanism: central enqueueing in the queue, workers fetching tasks by priority/reservation time.
Overview
Experiment run scheduling is accomplished by the experiment queue and the execution engine working
together: submit() of the ExperimentQueue is the only enqueueing entry point on the GUI thread
(task numbers are allocated centrally, and the preparation station and looper also enqueue through
it); the resident worker polls the task dictionary in ExperimentManager.queue_fn and selects and
executes tasks by priority → task number → reservation time (due_check) (measurement → sequence →
run).
Related components
| Component | Module | Description |
|---|---|---|
ExperimentQueue | experiment/experiment_queue.py | Task queue: enqueueing, state tracking, pause/termination |
ExperimentManager | experiment/experiment_manager.py | Execution engine: picks tasks, runs measurement/sequence/run |
PrepStation | experiment/prepstation.py | Prepared tasks, pushed into the queue |
Looper | looper/ | Conditional loop, enqueued via submit |
Scheduling flow
PrepStation / Looper / experiment window --submit()--> queue task dictionary
↓
ExperimentManager.queue_fn (worker thread, by priority/task number/reservation time)
↓
start_measurement → start_sequence → several runs → end_sequence → end_measurement
At run time pause / resume is supported (pause) as well as graceful termination
(terminate_experiment, Termination Pending).