STINNER Victor <victor.stin...@haypocalc.com> added the comment:

I think that we should process in two steps:

* Expose low level C functions
* Write a high level reusing the best low level function depending on the OS

Low level functions:

* Expose clock_gettime() into the time module, with CLOCK_MONOTONIC and 
CLOCK_MONOTONIC_RAW constants, if available. The wrapper should be thin, so the 
result would be a tuple (sec, nsec) (to avoid issues with floating point 
numbers)
* Windows: GetTickCount, GetTickCount64 and QueryPerformaceCounter are 
monotonic. GetTickCount wraps after 50 days, so GetTickCount64 should be 
preferred. GetTickCount(64) returns a number of milliseconds. It looks like 
QueryPerformaceCounter has a better resolution than GetTickCount(64). I don't 
know when QueryPerformaceCounter does wrap? QueryPerformaceCounter is already 
exposed as time.clock().


High level:
* Use clock_gettime(CLOCK_MONOTONIC_RAW) on Linux>=2.6.28
* Use clock_gettime(CLOCK_MONOTONIC) on UNIX
* Use time.clock() (QueryPerformaceCounter) on Windows?
* If none of these functions is available, don't define the function

I propose time.monotonic() because I saw this name in different projects.

Pseudo-code for the time module:

monotonic = None
if hasattr(time, 'clock_gettime'):
  if hasattr(time, 'CLOCK_MONOTONIC_RAW'):
    def monotonic(): return time.clock_gettime(CLOCK_MONOTONIC_RAW)
  else:
    # i don't think that we should expose clock_gettime
    # if CLOCK_MONOTONIC is not available (or the function is useless)
    def monotonic(): return time.clock_gettime(CLOCK_MONOTONIC)
elif os.name == 'nt':
    def monotonic(): return time.clock()
if monotonic is not None:
   monotonic.__doc__ = 'monotonic time'
else:
   del monotonic

----------

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue10278>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to