Ich habe eine Funktion, die Schleifen und ich möchte messen, wie lange es dauert, eine Umdrehung einschließlich der Zeit zu durchlaufen, die ich mit tkinter hinzugefügt habe. Ich habe diese Zeilen am Ende meiner Looping-Funktion hinzugefügt.Wie fps (verstrichene Zeit) mit tkinter python.after messen?
Ich würde erwarten, die Menge der Zeit Änderung basierend auf dem .after
Wert zu sehen, aber unabhängig davon, ob ich es auf 25 oder 5025 setze, bekomme ich die gleichen grundlegenden Ergebnisse. Ich experimentierte auch damit, die Anweisung time2=
ganz am Anfang der Schleife zu setzen und dann auch die Positionen print und time2=
zu tauschen.
Ich bekomme leicht unterschiedliche Ergebnisse mit verschiedenen Positionen, aber keine von ihnen scheint die hinzugefügte Zeit des .after
Wertes zu zeigen, obwohl ich klar sehen kann (basierend auf dem Rest des Codes), dass die Zeit hinzugefügt wird.
Also habe ich offensichtlich ein "Messung" -Problem. Gibt es ein kritisches Stück Wissen, das ich nicht verstehe?
import time
def get_elapsed_time()
startTime = time.time()
my_loop()
endTime = time.time()
elapsedTime = endTime - startTime
print elapsedTime
time.time() stellt den Verlauf der Zeit seit der Epoche Linux, die 1:
print time.clock() - time2[0]
time2[0] = time.clock()
root.after(5025, myloop)
messen Sie die Zeit bevor "nachher" ausgeführt wird und bevor 'Myloop' ausgeführt wird, so dass Sie ein falsches Ergebnis erhalten müssen. Besseres minimales Arbeitsbeispiel, weil dieser Code nicht ausreicht, um zu antworten. – furas
BTW mit '5025' sollten Sie ungefähr' 1000/5025' FPS (ungefähr 0.199 FPS) bekommen, aber Sie müssen die Zeit hinzufügen, die durch den Befehl in 'myloop' verwendet wird - dh. '1000/(5025 + time_in_myloop)' FPS – furas
time.clock() ist in Python 3.3 veraltet - Sie sollten process_time() verwenden Wenn Sie jedoch versuchen, eine ereignisgesteuerte abgelaufene Zeit zu erfassen, möchten Sie möglicherweise eine Delta-Zeit .time() statt, wie time.clock() und process_time() messen CPU-Zeit benötigt, um die Python-Zeile auszuführen –