Programming · Python

Schleifendauer festlegen in Python

Möchte man eine Schleife Beispielsweise alle 20 Millisekunden ausführen so hat man das Problem, dass man nicht genau weiß wie lang die Ausführungszeit der Schleife ist und wie lang danach gewartet werden muss. Hierzu kann ein Timer verwendet werden. Das kann folgendermaßen aussehen:

import datetime
import time
schleifendauer = 0.02 #Zeit in Sekunden
while (True):
  a = datetime.datetime.now()
  #irgendeincode
  b = datetime.datetime.now()
  c = b-a
  waittime = schleifendauer - c.total_seconds()
  if (waittime > 0):
    time.sleep(waittime)
  else:
    waittime=0
  print ("Zeit gearbeitet: "+str(c.total_seconds())+" Zeit gewartet: "+str(waittime)+" Gesamtzeit: "+str(c.total_seconds()+waittime))

Mit a wird der Zeitpunkt am Anfang und mit b der Zeitpunkt am Ende der Aufgabe definiert. Durch Bildung der Differenz wird die Zeit zwischen den beiden Zeitpunkten ermittelt und von der gewünschten Schleifendauer abgezogen. Die restliche Zeit wird nun gewartet. Sollte die Aufgabe länger gedauert haben als die gewünschte Schleifendauer so wird gar nicht gewartet.

Advertisements

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden /  Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden /  Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden /  Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden /  Ändern )

Verbinde mit %s