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.
@@ -230,16 +232,19 @@ def autorange(self, callback=None):
230
232
return (number , time_taken )
231
233
i *= 10
232
234
235
+
233
236
def timeit (stmt = "pass" , setup = "pass" , timer = default_timer ,
234
237
number = default_number , globals = None ):
235
238
"""Convenience function to create Timer object and call timeit method."""
236
239
return Timer (stmt , setup , timer , globals ).timeit (number )
237
240
241
+
238
242
def repeat (stmt = "pass" , setup = "pass" , timer = default_timer ,
239
243
repeat = default_repeat , number = default_number , globals = None ):
240
244
"""Convenience function to create Timer object and call repeat method."""
241
245
return Timer (stmt , setup , timer , globals ).repeat (repeat , number )
242
246
247
+
243
248
def main (args = None , * , _wrap_timer = None ):
244
249
"""Main program, used when run as a script.
245
250
@@ -261,18 +266,17 @@ def main(args=None, *, _wrap_timer=None):
261
266
args = sys .argv [1 :]
262
267
import getopt
263
268
try :
264
- opts , args = getopt .getopt (args , "n:u:s:r:tcpvh " ,
269
+ opts , args = getopt .getopt (args , "n:u:s:r:pvh " ,
265
270
["number=" , "setup=" , "repeat=" ,
266
- "time" , "clock" , "process" ,
267
- "verbose" , "unit=" , "help" ])
271
+ "process" , "verbose" , "unit=" , "help" ])
268
272
except getopt .error as err :
269
273
print (err )
270
274
print ("use -h/--help for command line help" )
271
275
return 2
272
276
273
277
timer = default_timer
274
278
stmt = "\n " .join (args ) or "pass"
275
- number = 0 # auto-determine
279
+ number = 0 # auto-determine
276
280
setup = []
277
281
repeat = default_repeat
278
282
verbose = 0
@@ -289,7 +293,7 @@ def main(args=None, *, _wrap_timer=None):
289
293
time_unit = a
290
294
else :
291
295
print ("Unrecognized unit. Please select nsec, usec, msec, or sec." ,
292
- file = sys .stderr )
296
+ file = sys .stderr )
293
297
return 2
294
298
if o in ("-r" , "--repeat" ):
295
299
repeat = int (a )
@@ -323,7 +327,7 @@ def callback(number, time_taken):
323
327
msg = "{num} loop{s} -> {secs:.{prec}g} secs"
324
328
plural = (number != 1 )
325
329
print (msg .format (num = number , s = 's' if plural else '' ,
326
- secs = time_taken , prec = precision ))
330
+ secs = time_taken , prec = precision ))
327
331
try :
328
332
number , _ = t .autorange (callback )
329
333
except :
@@ -374,5 +378,6 @@ def format_time(dt):
374
378
UserWarning , '' , 0 )
375
379
return None
376
380
381
+
377
382
if __name__ == "__main__" :
378
383
sys .exit (main ())
0 commit comments