def waitany(events, timeout=None, result_class=event.AsyncResult): result = result_class() update = result.set try: for event in events: if not event.started: event.start() if event.ready(): return event else: event.rawlink(update) return result.get(timeout=timeout) finally: for event in events: event.unlink(update)
def timeout_cb(event): if event.ready(): return event.set()