def select(rlist, wlist, xlist, timeout=None): """select(rlist, wlist, xlist, timeout=None) -> (rlist, wlist, xlist) Return the result of poll as a lists of sockets ready for r/w/exception. This has the same interface as Python's built-in ``select.select()`` function. Parameters ---------- timeout : float, int, optional The timeout in seconds. If None, no timeout (infinite). This is in seconds to be compatible with ``select.select()``. The underlying zmq_poll uses microseconds and we convert to that in this function. rlist : list of sockets/FDs sockets/FDs to be polled for read events wlist : list of sockets/FDs sockets/FDs to be polled for write events xlist : list of sockets/FDs sockets/FDs to be polled for error events Returns ------- (rlist, wlist, xlist) : tuple of lists of sockets (length 3) Lists correspond to sockets available for read/write/error events respectively. """ if timeout is None: timeout = -1 # Convert from sec -> us for zmq_poll. # zmq_poll accepts 3.x style timeout in ms timeout = int(timeout*1000.0) if timeout < 0: timeout = -1 sockets = [] for s in set(rlist + wlist + xlist): flags = 0 if s in rlist: flags |= POLLIN if s in wlist: flags |= POLLOUT if s in xlist: flags |= POLLERR sockets.append((s, flags)) return_sockets = _poll(sockets, timeout) rlist, wlist, xlist = [], [], [] for s, flags in return_sockets: if flags & POLLIN: rlist.append(s) if flags & POLLOUT: wlist.append(s) if flags & POLLERR: xlist.append(s) return rlist, wlist, xlist
def select(rlist, wlist, xlist, timeout=None): """select(rlist, wlist, xlist, timeout=None) -> (rlist, wlist, xlist) Return the result of poll as a lists of sockets ready for r/w/exception. This has the same interface as Python's built-in ``select.select()`` function. Parameters ---------- timeout : float, int, optional The timeout in seconds. If None, no timeout (infinite). This is in seconds to be compatible with ``select.select()``. The underlying zmq_poll uses microseconds and we convert to that in this function. rlist : list of sockets/FDs sockets/FDs to be polled for read events wlist : list of sockets/FDs sockets/FDs to be polled for write events xlist : list of sockets/FDs sockets/FDs to be polled for error events Returns ------- (rlist, wlist, xlist) : tuple of lists of sockets (length 3) Lists correspond to sockets available for read/write/error events respectively. """ if timeout is None: timeout = -1 # Convert from sec -> us for zmq_poll. # zmq_poll accepts 3.x style timeout in ms timeout = int(timeout * 1000.0) if timeout < 0: timeout = -1 sockets = [] for s in set(rlist + wlist + xlist): flags = 0 if s in rlist: flags |= POLLIN if s in wlist: flags |= POLLOUT if s in xlist: flags |= POLLERR sockets.append((s, flags)) return_sockets = _poll(sockets, timeout) rlist, wlist, xlist = [], [], [] for s, flags in return_sockets: if flags & POLLIN: rlist.append(s) if flags & POLLOUT: wlist.append(s) if flags & POLLERR: xlist.append(s) return rlist, wlist, xlist
def poll(self, timeout=None): """p.poll(timeout=None) Poll the registered 0MQ or native fds for I/O. Parameters ---------- timeout : float, int The timeout in milliseconds. If None, no `timeout` (infinite). This is in milliseconds to be compatible with ``select.poll()``. The underlying zmq_poll uses microseconds and we convert to that in this function. """ if timeout is None: timeout = -1 timeout = int(timeout) if timeout < 0: timeout = -1 return _poll(list(self.sockets.items()), timeout=timeout)