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
@@ -269,7 +274,7 @@ def main(args=None, *, _wrap_timer=None):
269
274
270
275
timer = default_timer
271
276
stmt = "\n " .join (args ) or "pass"
272
- number = 0 # auto-determine
277
+ number = 0 # auto-determine
273
278
setup = []
274
279
repeat = default_repeat
275
280
verbose = 0
@@ -286,7 +291,7 @@ def main(args=None, *, _wrap_timer=None):
286
291
time_unit = a
287
292
else :
288
293
print ("Unrecognized unit. Please select nsec, usec, msec, or sec." ,
289
- file = sys .stderr )
294
+ file = sys .stderr )
290
295
return 2
291
296
if o in ("-r" , "--repeat" ):
292
297
repeat = int (a )
@@ -320,7 +325,7 @@ def callback(number, time_taken):
320
325
msg = "{num} loop{s} -> {secs:.{prec}g} secs"
321
326
plural = (number != 1 )
322
327
print (msg .format (num = number , s = 's' if plural else '' ,
323
- secs = time_taken , prec = precision ))
328
+ secs = time_taken , prec = precision ))
324
329
try :
325
330
number , _ = t .autorange (callback )
326
331
except :
@@ -371,5 +376,6 @@ def format_time(dt):
371
376
UserWarning , '' , 0 )
372
377
return None
373
378
379
+
374
380
if __name__ == "__main__" :
375
381
sys .exit (main ())
0 commit comments