def __init__(self, future): self.error = None self.finished_event = Event() self.future = future self.future.add_callbacks( callback=self.handle_page, errback=self.handle_error) self.res = set()
def Event(): """ Returns an event object """ from multiprocessing.synchronize import Event return Event()
def Event(): ''' Returns an event object ''' from multiprocessing.synchronize import Event return Event()
class Async_Optimize(object): callback = lambda *x: None runsignal = Event() SENTINEL = "SENTINEL" def async_callback_collect(self, q): while self.runsignal.is_set(): try: for ret in iter(lambda: q.get(timeout=1), self.SENTINEL): self.callback(*ret) self.runsignal.clear() except Empty: pass def opt_async(self, f, df, x0, callback, update_rule=PolakRibiere, messages=0, maxiter=5e3, max_f_eval=15e3, gtol=1e-6, report_every=10, *args, **kwargs): self.runsignal.set() c = None outqueue = None if callback: outqueue = Queue() self.callback = callback c = Thread(target=self.async_callback_collect, args=(outqueue, )) c.start() p = _CGDAsync(f, df, x0, update_rule, self.runsignal, self.SENTINEL, report_every=report_every, messages=messages, maxiter=maxiter, max_f_eval=max_f_eval, gtol=gtol, outqueue=outqueue, *args, **kwargs) p.start() return p, c def opt(self, f, df, x0, callback=None, update_rule=FletcherReeves, messages=0, maxiter=5e3, max_f_eval=15e3, gtol=1e-6, report_every=10, *args, **kwargs): p, c = self.opt_async(f, df, x0, callback, update_rule, messages, maxiter, max_f_eval, gtol, report_every, *args, **kwargs) while self.runsignal.is_set(): try: p.join(1) if c: c.join(1) except KeyboardInterrupt: # print "^C" self.runsignal.clear() p.join() if c: c.join() if c and c.is_alive(): # self.runsignal.set() # while self.runsignal.is_set(): # try: # c.join(.1) # except KeyboardInterrupt: # # print "^C" # self.runsignal.clear() # c.join() print "WARNING: callback still running, optimisation done!" return p.result
def __init__(self): self.callback = lambda *x: None self.runsignal = Event() self.SENTINEL = "SENTINEL"
def Event(): from multiprocessing.synchronize import Event return Event()