docs: def interleave(self, waker, *args, **kw):
          """
          interleave(waker) interleaves this reactor with the
          current application by moving the blocking parts of
          the reactor (select() in this case) to a separate
          thread.  This is typically useful for integration with
          GUI applications which have their own event loop
          already running.
  
          See the module docstring for more information.
          """
          self.startRunning(*args, **kw)
          loop = self._interleave()
          def mainWaker(waker=waker, loop=loop):
              #print >>sys.stderr, "mainWaker()"
              waker(loop.next)
          self.mainWaker = mainWaker
          loop.next()
          self.ensureWorkerThread()