Message210916
> Just so it's clear, those bugs are theoretical: whether you pass 1e-7/1e-10 or 0 to select/kqueue is exactly the same (entering/leaving the syscall takes some time)...
After many many tests with asyncio (last issue: #20505), I disagree with you. It has a real impact.
Can someone please review my new patch?
I now think that select.select() should also be fixed in Python 3.4 to be consistent with the new select.poll() and select.epoll.poll() behaviour (timeout rounding).
See msg210914 and msg210915 ( http://bugs.python.org/issue20505#msg210914 ): IocpSelector sleeps at least 0.5 ms (of perf counter) even with a timeout of 1 nanosecond, whereas SelectSelector sleeps sometimes 0.030 ms which looks like a non-blocking call.
I tested asyncio with the patch to round select timeout away from zero:
* With HPET disabled, SelectSelector sleeps at least 15 ms according to the monotonic clock (FYI: at least 2 ms according to the perfomance counter)
* With HPET enabled, SelectSelector sleeps at least 15 ms according to the monotonic clock (FYI: at least 6.3 ms according to the perfomance counter)
These results are the expected behaviour: selectors should at least one unit of the monotonic time (15.6 ms). |
|
Date |
User |
Action |
Args |
2014-02-11 09:55:58 | vstinner | set | recipients:
+ vstinner, belopolsky, pitrou, skrah, neologix, serhiy.storchaka |
2014-02-11 09:55:58 | vstinner | set | messageid: <1392112558.1.0.467327559937.issue20320@psf.upfronthosting.co.za> |
2014-02-11 09:55:58 | vstinner | link | issue20320 messages |
2014-02-11 09:55:57 | vstinner | create | |
|