[issue18934] multiprocessing: use selectors module

Charles-François Natali report at bugs.python.org
Fri Sep 6 08:57:40 CEST 2013


Charles-François Natali added the comment:

> Richard Oudkerk added the comment:
>
> I remember wondering at one time why EPOLLNVAL did not exist, and realizing that closed fds are just silently unregistered by epoll().

Exactly.

> I guess the issue is that some of the selectors indicate a bad fd on registration, and others do it when polled.
>
>                 On registration      On poll
> ----------------------------------------------------------------
> SelectSelector  No                   Raises OSError
> PollSelector    No                   No (EVENT_READ or EVENT_WRITE)
> EpollSelector   Raises OSError       No
> KqueueSelector  ?                    ?

Kqueue raises OSError upon registration. Not sure about poll().

> It would be easiest to relax the test, perhaps by just checking that conn.poll(0) raises or returns True.

That's what I think too. Apparently, the test was added for this
issue: http://bugs.python.org/issue3321

Basically, the goal was to check that conn.poll() wouldn't crash if
passed an invalid FD (which can happen if you register a FD greater
than FD_SETSIZE in a fd_set).
So relaxing the check would still make sense.

> Or maybe PollSelector.select() should raise OSError if POLLNVAL is indicated.  That would match the behaviour of SelectSelector.select().

Yes, that would be a possibility. I'll have to give it some more thought.

----------

_______________________________________
Python tracker <report at bugs.python.org>
<http://bugs.python.org/issue18934>
_______________________________________


More information about the Python-bugs-list mailing list