code: def check_events(self, timeout=None):
          
          while True:
              try:
                  # blocks up to 'timeout' milliseconds
                  if timeout is None:
                      timeout = self._timeout
                  ret = self._pollobj.poll(timeout)
              except select.error, err:
                  if err[0] == errno.EINTR:
                      continue # interrupted, retry
                  else:
                      raise
              else:
                  break
  
          if not ret or (self._pipe[0] == ret[0][0]):
              return False
          # only one fd is polled
          return ret[0][1] & select.POLLIN
docs: Check for new events available to read, blocks up to timeout
          milliseconds.
  
          @param timeout: If specified it overrides the corresponding instance
                          attribute _timeout. timeout must be sepcified in
                          milliseconds.
          @type timeout: int
  
          @return: New events to read.
          @rtype: bool