it-swarm.com.de

Wie misst man die Zeit zwischen Codezeilen in Python?

In Java können wir also die Zeit messen, die eine Funktion zur Ausführung benötigt

Aber wie wird es in Python gemacht? Zum Messen der Start- und Endzeit der Zeit zwischen Codezeilen? Etwas, das dies tut:

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

Sie können time.clock dafür verwenden.

import time
start = time.clock()
#your code here    
print time.clock() - start

Beim ersten Anruf wird der Timer aktiviert, und beim zweiten Anruf wird angezeigt, wie viele Sekunden vergangen sind. 

Es gibt bessere Tools für die Profilerstellung wie timeit und profile, allerdings wird hier die Zeit gemessen und darum bitten Sie

73

Mit Hilfe einer kleinen Convenience-Klasse können Sie die Zeit in eingerückten Zeilen messen wie folgt:

with CodeTimer():
   line_to_measure()
   another_line()
   # etc...

Welches wird nach Beendigung der Ausführung der eingerückten Zeilen angezeigt:

Code block took: x.xxx ms

Der Code für die obige Klasse:

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')

Sie könnten dann die Codeblöcke benennen die Sie messen möchten:

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

Und nest sie:

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

Sie können auch import time library verwenden:

start = time.time()
   #your code
end = time.time()
time_taken = end - start
print('Time: ',time_taken)
2

Ich ziehe es immer vor, die Zeit in Stunden, Minuten und Sekunden (% H:% M:% S) zu überprüfen:

from datetime import datetime
start = datetime.now()
# your code
end = datetime.now()
time_taken = end - start
print('Time: ',time_taken) 

ausgabe:

Time:  0:00:00.000019
2
Sayali Sonawane