[issue20311] epoll.poll(timeout) and PollSelector.select(timeout) must round the timeout to the upper bound
STINNER Victor
report at bugs.python.org
Fri Jan 24 00:25:57 CET 2014
STINNER Victor added the comment:
Le 24 janv. 2014 00:08, "Antoine Pitrou" <report at bugs.python.org> a écrit :
> > For example, it may call again epoll_wait() if it took less than timeout
> > seconds and returned no event, *and* the ready list is empty.
>
> Easy solution: add 1 ms. to the timeout before calling epoll_wait().
> Perhaps we need the same kind of thing for select() and poll() too.
It doesn't fix the case when EpollSelector.select() got an InterruptedError.
Adding 1 ms works around the (now fixed) timeout rounding issue but I
prefered to round differently to not sleep longer than requested (try to
respect deadline).
About the "system clock", it's possibke than Linux uses a different clock
for epoll_wait() than CLOCK_MONOTONIC, and than clocks have a different
resolution.
I didn't test the rounding issue on Windows where time.monotonic() has a
resolution between... 1 and 16 ms!
----------
_______________________________________
Python tracker <report at bugs.python.org>
<http://bugs.python.org/issue20311>
_______________________________________
More information about the Python-bugs-list
mailing list