[issue20311] epoll.poll(timeout) and PollSelector.select(timeout) must round the timeout to the upper bound

Charles-François Natali report at bugs.python.org
Thu Jan 23 23:21:08 CET 2014


Charles-François Natali added the comment:

> Ah? The manual page of epoll_wait() says:
>
> "The  timeout  argument specifies the minimum number of milliseconds that
epoll_wait() will block.  (This interval will be rounded up to the system
clock granularity, and kernel scheduling delays mean that the blocking
 interval may  overrun  by  a  small  amount.)"
>
> I read minimum, not maximum here :-)

Yes, but we're talking about a 1e-4 accuracy here: I really doubt all
hardware supports high-resolution timers. epoll() returning 1e-4s before
the passed delay doesn't surprise me.

> If epoll_wait(timeout_ms) may wait less than timeout_ms seconds, asyncio
algorithm is wrong, or at least inefficient. It should loop until the time
delta is at least total_timeout seconds. See the original issue:
> http://code.google.com/p/tulip/issues/detail?id=106

Not really: sure, an early wakeup can cause spurious loops, but this should
be really rare: how often is the main event loop called with
sub-millisecond timeouts?

----------

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


More information about the Python-bugs-list mailing list