[Python-ideas] time.wallclock() or other similar stuff

Steven D'Aprano steve at pearwood.info
Tue Nov 2 04:38:14 CET 2010


Alexander Belopolsky wrote:
> On Mon, Nov 1, 2010 at 9:50 PM, Steven D'Aprano <steve at pearwood.info> wrote:
> ..
>> The timeit module includes:
>>
>> if sys.platform == "win32":
>>    # On Windows, the best timer is time.clock()
>>    default_timer = time.clock
>> else:
>>    # On most other platforms the best timer is time.time()
>>    default_timer = time.time
>>
> 
> Doesn't this mean that the requested functionality is already available as
> 
> from timeit import default_timer
> 
> ?


Well, yes, it does, but:

(1) How many people would think to look in timeit for this function? 
Both you and Kristján were apparently surprised that it already exists, 
and I'd bet money that you weren't the only ones. timeit seems to be 
more of an application than a library (although I acknowledge the border 
between the two is fuzzy), and people don't think about using it as a 
library.

(2) The time module is the natural place to look for time-related 
functions. It would be nicer if timeit could import the default timer 
from time:

from time import timer as default_timer  # or wall_clock if you prefer

(3) The default_timer is an implementation detail of timeit. It could 
change, or disappear, or be renamed. You'll note it isn't documented:

http://docs.python.org/library/timeit.html

(4) I started off thinking that we should just document timer 
(wall_clock) as an alias to one of time() or clock(), but I changed my 
mind. That's an implementation detail that we should be free to change 
in the future. For the sake of information hiding, we shouldn't promise 
that the timer will be one of time.clock() or time.time(). Who knows, 
maybe there are (or will be someday) supported platforms where neither 
choice is appropriate, and the timer needs to be something else?



-- 
Steven




More information about the Python-ideas mailing list