web-dev-qa-db-fra.com

Comment mesurer le temps pris entre les lignes de code en python?

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
40
alvas

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.

73
Yevgen Yampolskiy

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
5
Justas

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)
2
Akshaya Natarajan