Donc, en Java, nous pouvons faire Comment mesurer le temps pris par une fonction pour exécuter
Mais comment fait-on en python? Pour mesurer le temps de début et de fin entre les lignes de codes? Quelque chose qui fait ceci:
import some_time_library
starttime = some_time_library.some_module()
code_tobe_measured()
endtime = some_time_library.some_module()
time_taken = endtime - starttime
Vous pouvez utiliser time.clock
pour cela.
import time
start = time.clock()
#your code here
print time.clock() - start
Le premier appel active la minuterie et le second appel indique le nombre de secondes écoulées.
Il existe de meilleurs outils de profilage tels que timeit
et profile
, cependant celui-ci mesurera le temps et c’est ce que vous demandez.
Avec l'aide d'une petite classe de confort, vous pouvez mesurer le temps passé dans les lignes en retrait comme ceci:
with CodeTimer():
line_to_measure()
another_line()
# etc...
Ce qui montrera ce qui suit après la fin de la/des ligne (s) en retrait:
Code block took: x.xxx ms
Le code pour la classe ci-dessus:
import time
class CodeTimer:
def __init__(self, name=None):
self.name = " '" + name + "'" if name else ''
def __enter__(self):
self.start = time.clock()
def __exit__(self, exc_type, exc_value, traceback):
self.took = (time.clock() - self.start) * 1000.0
print('Code block' + self.name + ' took: ' + str(self.took) + ' ms')
Vous pouvez alors nommer les blocs de code vous voulez mesurer:
with CodeTimer('loop 1'):
for i in range(100000):
pass
with CodeTimer('loop 2'):
for i in range(100000):
pass
Code block 'loop 1' took: 4.991 ms
Code block 'loop 2' took: 3.666 ms
Et nid eux:
with CodeTimer('Outer'):
for i in range(100000):
pass
with CodeTimer('Inner'):
for i in range(100000):
pass
for i in range(100000):
pass
Code block 'Inner' took: 2.382 ms
Code block 'Outer' took: 10.466 ms
Vous pouvez également utiliser la bibliothèque import time
:
start = time.time()
#your code
end = time.time()
time_taken = end - start
print('Time: ',time_taken)