[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