Victor Stinner wrote:

Is steady() merely a convenience function to avoid the user having
to write something like this?

steady() remembers if the last call to monotonic failed or not. The
real implementation is closer to something like:

def steady():
  if not steady.has_monotonic:
    return time.time()
  try:
    return time.monotonic()
  except (AttributeError, OSError):
    steady.has_monotonic = False
    return time.time()
steady.has_monotonic = True

Does this mean that there are circumstances where monotonic will work for a while, but then fail?

Otherwise, we would only need to check monotonic once, when the time module is first loaded, rather than every time it is called. Instead of the above:

# global to the time module
try:
    monotonic()
except (NameError, OSError):
    steady = time
else:
    steady = monotonic



Are there failure modes where monotonic can recover? That is, it works for a while, then raises OSError, then works again on the next call.

If so, steady will stop using monotonic and never try it again. Is that deliberate?



--
Steven

_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to