[Python-Dev] Rename time.steady(strict=True) to time.monotonic()?

Steven D'Aprano steve at pearwood.info
Sat Mar 24 03:08:58 CET 2012


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



More information about the Python-Dev mailing list