thread.py 435 B

123456789101112131415161718
  1. from threading import Thread, Event
  2. class ThreadScheduler(object):
  3. def call(self, fn):
  4. thread = Thread(target=fn)
  5. thread.start()
  6. def wait(self, promise, timeout=None):
  7. e = Event()
  8. def on_resolve_or_reject(_):
  9. e.set()
  10. promise._then(on_resolve_or_reject, on_resolve_or_reject)
  11. waited = e.wait(timeout)
  12. if not waited:
  13. raise Exception("Timeout")