def dispatcher_vanilla(): from threading import Thread class Client(Thread): def __init__(self, dispatcher): Thread.__init__(self) self.dispatcher = dispatcher def run(self): from time import sleep print "start acq" renderer = self.dispatcher.acquire() print "got one" sleep(2) renderer = self.dispatcher.acquire() renderer = self.dispatcher.acquire_new(energy_terms=['eng1', 'eng2']) sleep(2) self.dispatcher.stop() dispatcher = Renderer_dispatcher() client = Client(dispatcher) client.start() dispatcher.run()