[Python-Dev] Drop the new time.wallclock() function?
Zooko Wilcox-O'Hearn
zooko at zooko.com
Tue Mar 27 00:31:48 CEST 2012
On Fri, Mar 23, 2012 at 11:27 AM, Victor Stinner
<victor.stinner at gmail.com> wrote:
>
> time.steady(strict=False) is what you need to implement timeout.
No, that doesn't fit my requirements, which are about event
scheduling, profiling, and timeouts. See below for more about my
requirements.
I didn't say this explicitly enough in my previous post:
Some use cases (timeouts, event scheduling, profiling, sensing)
require a steady clock. Others (calendaring, communicating times to
users, generating times for comparison to remote hosts) require a wall
clock.
Now here's the kicker: each use case incur significant risks if it
uses the wrong kind of clock.
If you're implementing event scheduling or sensing and control, and
you accidentally get a wall clock when you thought you had a steady
clock, then your program may go seriously wrong -- events may fire in
the wrong order, measurements of your sensors may be wildly incorrect.
This can lead to serious accidents. On the other hand, if you're
implementing calendaring or display of "real local time of day" to a
user, and you are using a steady clock for some reason, then you risk
displaying incorrect results to the user.
So using one kind of clock and then "falling back" to the other kind
is a choice that should be rare, explicit, and discouraged. The
provision of such a function in the standard library is an attractive
nuisance -- a thing that people naturally think that they want when
they haven't though about it very carefully, but that is actually
dangerous.
If someone has a use case which fits the "steady or else fall back to
wall clock" pattern, I would like to learn about it.
Regards,
Zooko
More information about the Python-Dev
mailing list