Timer zeigt negative Zeit verstrichen

Ich benutze einen ganz einfachen Code, um jede Schleife in einer for Anweisung for schreiben. Es sieht so aus:

 import time for item in list_of_files: # Start timing this loop. start = time.clock() # Do a bunch of stuff. # Get time elapsed in seconds. elapsed = time.clock() - start # Get minutes and seconds. m, s = divmod(elapsed, 60) # Print result. print 'End of analysis for %s in %dm %02ds.\n'% (item, m, s) 

Dies wird die meisten der Zeiten zu korrekten Ausgängen wie 9m 52s aber manchmal mit großen Schleifen (das -53m 17s einige Zeit) bekomme ich negative Ergebnisse wie -53m 17s .

Ich kann nicht ein klares Limit festlegen, bei dem die Ergebnisse als negative Werte erscheinen, aber es passiert leider nur für verstrichene Zeiten> 20 min, aber nicht für jede Schleife, die> 20 min (dh: es ist nicht konsistent).

Gibt es etwas in meinem Code zu Zeit jede Schleife, die dies verursacht?

Hinzufügen

Ich benutze Spyder als meine IDE. Ich verglichen, wie time.clock() verhielt vs time.time() und das ist, was ich sehe:

 >>> st1, st2 = time.clock(), time.time() >>> st1,st2 (507.65, 1374502193.357196) >>> print time.clock()-st1, time.time()-st2 0.14 15.1921429634 >>> print time.clock()-st1, time.time()-st2 0.34 35.0087578297 >>> print time.clock()-st1, time.time()-st2 0.67 69.8715758324 >>> print time.clock()-st1, time.time()-st2 0.77 80.0557789803 >>> print time.clock()-st1, time.time()-st2 1.25 130.559605837 >>> print time.clock()-st1, time.time()-st2 3.02 309.845729828 >>> print time.clock()-st1, time.time()-st2 8.9 899.936934948 

Sollte nicht time.clock() die in Sekunden verstrichene Zeit zurückgeben? Der time.time() Aufruf hält die verstrichene Zeit in Sekunden genau auf (zB der letzte Aufruf erfolgt nach 15 Minuten, was 900 Sek. time.clock() ), aber ich habe keine Ahnung, was time.clock() tut.

2 Solutions collect form web for “Timer zeigt negative Zeit verstrichen”

Ich vermute, dass du irgendeine Art von Überlauf bekommst.

http://linux.die.net/man/3/clock

Die linux man Seite für die Uhr deutet darauf hin, dass die Rückgabewerte für den Taktzyklus, also, wenn passieren, um Taktstart bei einem hohen Wert zu beginnen und bei einem niedrigen Wert zu stoppen, und Ihr Unterschied ist signiert, können Sie einen negativen Wert für die verstrichene Zeit erhalten.

Da Sie Timing-Ereignisse, die für mehrere Sekunden gehen, vielleicht die time.time () -Funktion wäre besser geeignet für das, was Sie tun.

time.clock() misst CPU-Zeit auf Unix-Systemen, nicht Wandzeit. Weitere Informationen zum zugrunde liegenden Systemaufruf finden Sie unter http://pubs.opengroup.org/onlinepubs/007908799/xsh/clock.html (beachten Sie den Teil, wo er sagt, dass er einpacken kann).

Wenn du die Wand time.time() messen willst, benutze time.time() .

  • Zeit bis Dezimalzeit in Python
  • Python bekommt aktuelle Zeit in der rechten Zeitzone
  • So berechnen Sie das Zeitintervall zwischen zwei Zeitzeichenfolgen
  • Wie kann man in einem py-gtk-Fenster kontinuierliche Daten anzeigen?
  • Stoppuhr in Python
  • Wie kann ich beschleunigen Seiten mit urllib2 in Python?
  • Timing-Funktionen
  • Python-Zeitverzögerungen
  • Umwandlung von Minuten in HH: MM-Format in Python
  • Zeitdifferenz berechnen
  • Planen von Pythonprogrammen
  • Python ist die beste Programmiersprache der Welt.