Ich habe einen Code geändert, den ich auf Stackoverflow here gefunden habe, aber ich bekomme ein seltsames Verhalten. Kann jemand meinen Fehler sehen?Python Zeitvariable ändert sich nicht
import atexit
from time import clock
line = "="*10 + ">>>"
def secondsToStr(s):
return "{0}.{1}ms".format(round(s*1000), round(s*1000000))
##
# @brief Starts a timer. If the program crashes, the end function will be called anyway.
def start():
atexit.register(stop)
print(line,"Start time measurement")
startTime = clock()
print("new start time:", startTime)
##
# @brief Needs to be called after start(). Prints the time passed since start() was called.
def stop():
end = clock()
elapsed = end-startTime
print(startTime, end) # Inserted for debugging
print(line, "Ellapsed time:", secondsToStr(elapsed))
atexit.unregister(stop)
def now():
return secondsToStr(clock())
startTime = clock()
Die Idee ist start()
und stop()
zu nennen, die Zeit das Programm dauert zwischen diesen beiden Calles zu messen. Seltsamerweise ändert sich die startTime
nicht. Somit gibt jeder Anruf von stop()
die vergangene Zeit seit dem ersten Anruf von start()
an. Hier ist ein Beispiel für die Ausgabe:
==========>>> Start time measurement
new start time: 0.285078
Doing work
0.231932 1.766478
==========>>> Ellapsed time: 1535.1534546ms
==========>>> Start time measurement
new start time: 1.766624
More work
0.231932 1.975752
==========>>> Ellapsed time: 1744.1743820ms
==========>>> Start time measurement
new start time: 1.975821
More work
0.231932 1.976301
==========>>> Ellapsed time: 1744.1744369ms
Warum ist die startTime
Wechsel nie? Es sollte jedes Mal einen neuen Wert erhalten, wenn start()
aufgerufen wird.
Haben Sie gelernt, was eine lokale Variable ist? – user2357112