实验管理器

核心实验执行引擎:从实验队列取任务并按测量/序列/运行层级调度。

概述

quatm/GUI/experiment/experiment_manager.py 提供实验管理器(ExperimentManager ):从实验队列(ExperimentQueue)取出任务并执行的引擎。其队列轮询运行在 worker 线程,任务按 测量(measurement)→ 重复(repetition)→ 序列/扫描 (sequence)→ 单次运行(run) 的层级结构调度。

执行流程

queue_fn(worker 线程持续轮询队列)
  └─→ run(任务包装:任何结束方式都保证收尾)
       ├─→ start_measurement(测量开始钩子)
       ├─→ start_sequence(序列/扫描开始钩子)
       │     └─→ … 多次带变化参数的 run …
       ├─→ end_sequence(序列结束钩子)
       └─→ end_measurement(测量结束钩子并清理任务表)

关键方法

方法说明
queue_fn持续轮询队列任务字典:按优先级、任务号与预约时间挑选任务
run任务运行包装:无论 Done/Terminated/Failed/删除都正常收尾
pause暂停当前实验;再次调用恢复
terminate_experiment优雅终止:让当前这一次 run 自然跑完再停止
start_measurement调用实验的 start/end 各阶段钩子
set_dict把单个参数写入实验对象实例属性
set_run_nr / set_rep_nr同步运行/重复序号到任务字典并刷新表格
due_check判断任务是否到预约执行时间
start_queue / shutdown启动 / 停止常驻队列 worker
update_table通知 GUI 刷新任务表显示

用法

from quatm.GUI.experiment.experiment_manager import ExperimentManager

manager = ExperimentManager(browser)   # browser 提供队列与界面
manager.start_queue()                  # 启动常驻队列 worker

任务在独立 worker 线程中执行,不阻塞 GUI;浏览器关闭时调用 shutdown 停止队列 worker 以便进程干净退出。