[Python-Dev] this is why we shouldn't call it a "monotonic clock" (was: PEP 418 is too divisive and confusing and should be postponed)
cs at zip.com.au
Sun Apr 8 03:38:30 CEST 2012
Victor et al,
Just an update note:
I've started marking up clocks with attributes; not yet complete and I
still need to make a small C extension to present the system clocks to
Python space (which means learning to do that, too).
But you can glance over the start on it here:
Several feature flags and some properties for qualifying clocks.
Still needed stuff includes: C access to clocks, .accuracy being actual
clock precision versus the resolution of the units in the underlying OS
call, a __repr__ and/or __str__ to decode feature bitmaps into useful
strings, .is_*() __getattr__ method to resolve against flags by name
or maybe has_flag(str), etc.
On 07Apr2012 01:16, Victor Stinner <victor.stinner at gmail.com> wrote:
| > | This is the original reason for the original defect (issue 10278)
| > | unix' clock() doesn't actually provide a clock in this sense,
| > | it provides a resource usage metric.
| > Yeah:-( Its help says "Return the CPU time or real time since [...]".
| > Two very different things, as demonstrated. I suppose neither goes
| > backwards, but this seems like a classic example of the "useless
| > monotonic clock" against which Greg Ewing railed.
| > And why? For one thing, because one can't inspect its metadata to find
| > out what it does.
| Should I add another key to the result of
| time.get_clock_info('clock')? How can we define "clock on Windows"
| (almost monotonic and steady clock) vs "clock on UNIX" (CPU time) with
| a flag or a value?
For clocks I'm going with two feature flags: WALLCLOCK and RUNTIME. The
former indicates a clock that tries to stay in synch with real world time,
and would still advance when the system is suspended or idle; it would
almost certainly need to "step" over a suspend. The latter means system
run time; it accrues only while the system is up. Neither is CPU usage
(so a time.sleep(10) would add 10 seconds to both).
I think resource usage is not a "clock". We could characterise such
timers and counters with a lot of the same metrics we like to use with
clocks, but I do not think they should be returned by a system
purporting to return clocks or clock values.
On 07Apr2012 14:22, I wrote:
| On 06Apr2012 17:30, Glenn Linderman <v+python at g.nevcal.com> wrote:
| | Hopefully, for each system, the characteristics of each clock can be
| | discovered, and fully characterized in available metadata for the clock...
| Victor has asked me to do that for my skeleton, based on the tables he
| has assembled. I'll see what i can do there...
I've started on this, see above.
Victor Stinner <victor.stinner at gmail.com> wrote:
| | - define flags of all clocks listed in the PEP 418: clocks used in
| | the pseudo-code of time.steady and time.perf_counter, and maybe also
| | time.time
| I'll make one. It will take a little while. Will post again when ready.
So, new code to glance over as evidence of good faith, if not speed:-(
Cameron Simpson <cs at zip.com.au> DoD#743
Life is uncertain. Eat dessert first. - Jim Blandy
More information about the Python-Dev