Пример #1
0
 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()
Пример #2
0
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()
Пример #4
0
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
Пример #5
0
 def __init__(self):
     self.callback = lambda *x: None
     self.runsignal = Event()
     self.SENTINEL = "SENTINEL"
Пример #6
0
def Event():
    from multiprocessing.synchronize import Event
    return Event()