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).

ComponentModuleDescription
ExperimentQueueexperiment/experiment_queue.pyTask queue: enqueueing, state tracking, pause/termination
ExperimentManagerexperiment/experiment_manager.pyExecution engine: picks tasks, runs measurement/sequence/run
PrepStationexperiment/prepstation.pyPrepared tasks, pushed into the queue
Looperlooper/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).