STINNER Victor added the comment:
Clocks is a very complex topic, especially when you care of portability. See my
PEP 418.
asyncio uses time.monotonic() clock to not be impacted when the system clock
("wall clock") is updated by the administrator or automatically by NTP.
On Windows, time.monotonic() is implemented with GetTickCount64() which has a
bad resolution: around 15 ms. The exact resolution depends on the hardware.
See my PEP 418 which added time.monotonic() for Python 3.3 for much more
information:
https://www.python.org/dev/peps/pep-0418/#monotonic-clocks
To get the clock resolution, use:
>>> import time; print(time.get_clock_info('monotonic'))
Example on Linux:
>>> import time; print(time.get_clock_info('monotonic'))
namespace(adjustable=False, implementation='clock_gettime(CLOCK_MONOTONIC)',
monotonic=True, resolution=1e-09)
Well, the announced resolution is 1 nanosecond, but in practice it's more
around 500 ns. At least, it's better than 15 ms :-)
--
asyncio rounds timings using the clock resolution,
time.get_clock_info('monotonic').resolution. Search for self._clock_resolution
in Lib/asyncio/base_events.py.
asyncio is not designed for real time.
----------
nosy: +haypo
_______________________________________
Python tracker <[email protected]>
<https://bugs.python.org/issue31539>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com