How do you determine a processing time in Python?
You can implement two tic()
and tac()
functions, where tic()
captures the time which it is called, and tac()
prints the time difference since tic()
was called. Here is a short implementation:
import time
_start_time = time.time()
def tic():
global _start_time
_start_time = time.time()
def tac():
t_sec = round(time.time() - _start_time)
(t_min, t_sec) = divmod(t_sec,60)
(t_hour,t_min) = divmod(t_min,60)
print('Time passed: {}hour:{}min:{}sec'.format(t_hour,t_min,t_sec))
Now in your code you can use it as:
tic()
do_some_stuff()
tac()
and it will, for example, output:
Time passed: 0hour:7min:26sec
See also:
- Python's datetime library: https://docs.python.org/2/library/datetime.html
- Python's time library: https://docs.python.org/2/library/time.html
Building on and updating a number of earlier responses (thanks: SilentGhost, nosklo, Ramkumar) a simple portable timer would use timeit
's default_timer()
:
>>> import timeit
>>> tic=timeit.default_timer()
>>> # Do Stuff
>>> toc=timeit.default_timer()
>>> toc - tic #elapsed time in seconds
This will return the elapsed wall clock (real) time, not CPU time. And as described in the timeit
documentation chooses the most precise available real-world timer depending on the platform.
ALso, beginning with Python 3.3 this same functionality is available with the time.perf_counter
performance counter. Under 3.3+ timeit.default_timer() refers to this new counter.
For more precise/complex performance calculations, timeit
includes more sophisticated calls for automatically timing small code snippets including averaging run time over a defined set of repetitions.
Equivalent in python would be:
>>> import time
>>> tic = time.clock()
>>> toc = time.clock()
>>> toc - tic
If you are trying to find the best performing method then you should probably have a look at timeit
.