import random class Trigger(ReadonlyRegisterBase): def doRead(self): return None trigger = Trigger() trigger.initialize() scan = None def scan(): global scan scan = mscan(trigger, [out, sin.cache]) print scan scan_task = fork(scan)[0] time.sleep(0.5) for i in range(20): trigger.update() time.sleep(random.random()/5) time.sleep(1.0) ep=get_exec_pars() ep.currentScan.abort() #scan_task.cancel(True) ret = join(scan_task)