[Python-Dev] PEP 418: Add monotonic clock (original) (raw)

Matt Joiner anacrolix at gmail.com
Wed Mar 28 04:41:08 CEST 2012


On Mar 28, 2012 8:38 AM, "Victor Stinner" <victor.stinner at gmail.com> wrote:

Scott wrote: << The Boost implementation can be summarized as:_ _systemclock:_ _mac = gettimeofday_ _posix = clockgettime(CLOCKREALTIME)_ _win = GetSystemTimeAsFileTime_ _steadyclock:_ _mac = machabsolutetime_ _posix = clockgettime(CLOCKMONOTONIC)_ _win = QueryPerformanceCounter_ _highresolutionclock:_ _* = { steadyclock, if available_ _systemclock, otherwise } >> I read again the doc of the QElapsedTimer class of the Qt library. So Qt and Boost agree to say that QueryPerformanceCounter() is monotonic. I was confused because of a bug found in 2006 in Windows XP on multicore processors. QueryPerformanceCounter() gave a different value on each core. The bug was fixed in Windows and is known as KB896256 (I already added a link to the bug in the PEP).

I added a time.hires() clock to the PEP for the benchmarking/profiling use case (...)

It is this always-having-to-manually-fallback-depending-on-os that I was hoping your new functionality would avoid. Is time.trymonotonic() suitable for this usecase? If QueryPerformanceCounter() is monotonic, the API can be simplified to: * time.time() = system clock * time.monotonic() = monotonic clock * time.hires() = monotonic clock or fallback to system clock time.hires() definition is exactly what I was trying to implement with "time.steady(strict=True)" / "time.try_monotonic()". -- Scott> monotonicclock = always goes forward but can be adjusted Scott> steadyclock = always goes forward and cannot be adjusted I don't know if the monotonic clock should be called time.monotonic() or time.steady(). The clock speed can be adjusted by NTP, at least on Linux < 2.6.28.

Monotonic. It's still monotonic if it is adjusted forward, and that's okay.

I don't know if other clocks used by my time.monotonic() proposition can be adjusted or not. If I understand correctly, time.steady() cannot be implemented using CLOCK_MONOTONIC on Linux because CLOCK_MONOTONIC can be adjusted? Does it really matter if a monotonic speed is adjusted?

Victor


Python-Dev mailing list Python-Dev at python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/anacrolix%40gmail.com -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://mail.python.org/pipermail/python-dev/attachments/20120328/0f3702ec/attachment.html>



More information about the Python-Dev mailing list