50
50
"""
51
51
52
52
import gc
53
+ import itertools
53
54
import sys
54
55
import time
55
- import itertools
56
56
57
57
__all__ = ["Timer" , "timeit" , "repeat" , "default_timer" ]
58
58
@@ -77,9 +77,11 @@ def inner(_it, _timer{init}):
77
77
return _t1 - _t0
78
78
"""
79
79
80
+
80
81
def reindent (src , indent ):
81
82
"""Helper to reindent a multi-line statement."""
82
- return src .replace ("\n " , "\n " + " " * indent )
83
+ return src .replace ("\n " , "\n " + " " * indent )
84
+
83
85
84
86
class Timer :
85
87
"""Class for timing execution speed of small code snippets.
@@ -166,7 +168,7 @@ def timeit(self, number=default_number):
166
168
167
169
To be precise, this executes the setup statement once, and
168
170
then returns the time it takes to execute the main statement
169
- a number of times, as a float measured in seconds. The
171
+ a number of times, as float seconds if using the default timer. The
170
172
argument is the number of times through the loop, defaulting
171
173
to one million. The main statement, the setup statement and
172
174
the timer function to be used are passed to the constructor.
@@ -228,16 +230,19 @@ def autorange(self, callback=None):
228
230
return (number , time_taken )
229
231
i *= 10
230
232
233
+
231
234
def timeit (stmt = "pass" , setup = "pass" , timer = default_timer ,
232
235
number = default_number , globals = None ):
233
236
"""Convenience function to create Timer object and call timeit method."""
234
237
return Timer (stmt , setup , timer , globals ).timeit (number )
235
238
239
+
236
240
def repeat (stmt = "pass" , setup = "pass" , timer = default_timer ,
237
241
repeat = default_repeat , number = default_number , globals = None ):
238
242
"""Convenience function to create Timer object and call repeat method."""
239
243
return Timer (stmt , setup , timer , globals ).repeat (repeat , number )
240
244
245
+
241
246
def main (args = None , * , _wrap_timer = None ):
242
247
"""Main program, used when run as a script.
243
248
@@ -270,7 +275,7 @@ def main(args=None, *, _wrap_timer=None):
270
275
271
276
timer = default_timer
272
277
stmt = "\n " .join (args ) or "pass"
273
- number = 0 # auto-determine
278
+ number = 0 # auto-determine
274
279
setup = []
275
280
repeat = default_repeat
276
281
verbose = 0
@@ -287,7 +292,7 @@ def main(args=None, *, _wrap_timer=None):
287
292
time_unit = a
288
293
else :
289
294
print ("Unrecognized unit. Please select nsec, usec, msec, or sec." ,
290
- file = sys .stderr )
295
+ file = sys .stderr )
291
296
return 2
292
297
if o in ("-r" , "--repeat" ):
293
298
repeat = int (a )
@@ -321,7 +326,7 @@ def callback(number, time_taken):
321
326
msg = "{num} loop{s} -> {secs:.{prec}g} secs"
322
327
plural = (number != 1 )
323
328
print (msg .format (num = number , s = 's' if plural else '' ,
324
- secs = time_taken , prec = precision ))
329
+ secs = time_taken , prec = precision ))
325
330
try :
326
331
number , _ = t .autorange (callback )
327
332
except :
@@ -372,5 +377,6 @@ def format_time(dt):
372
377
UserWarning , '' , 0 )
373
378
return None
374
379
380
+
375
381
if __name__ == "__main__" :
376
382
sys .exit (main ())
0 commit comments