Ich verwende einen ziemlich einfachen Code, um jede Schleife in einer for
-Anweisung zeitlich zu bestimmen. Es sieht ungefähr so aus:
Dies wird meistens zu korrekten Ausgaben wie 9m 52s
führen, aber manchmal mit großen Schleifen (die etwas dauern) bekomme ich negative Ergebnisse wie -53m 17s
.
Ich kann kein eindeutiges Limit bestimmen, bei dem die Ergebnisse als negative Werte angezeigt werden, aber anscheinend nur für die verstrichenen Zeiten. & gt; 20 Minuten, aber nicht für jede Schleife, die & gt; 20 Minuten (dh: es ist nicht konsistent).
Gibt es etwas in meinem Code, um jede Schleife, die das verursacht, zu synchronisieren?
Ich verwende Spyder
als meine IDE. Ich habe verglichen, wie time.clock()
verhielt vs time.time()
und das ist, was ich sehe:
Sollte nicht time.clock()
die in Sekunden verstrichene Zeit zurückgeben? Der time.time()
-Aufruf verfolgt die verstrichene Zeit in Sekunden genau (zum Beispiel der letzte Anruf nach 15 Minuten, was 900 Sekunden entspricht), aber ich habe keine Ahnung, was time.clock()
macht.
Ich vermute, dass Sie eine Art Überlauf bekommen.
Die Linux-Manual-Seite für die Uhr schlägt vor, dass die Rückgabewerte für den Taktzyklus, also wenn die Uhr mit einem hohen Wert beginnt und bei einem niedrigen Wert stoppt, und Ihre Differenz signiert ist, erhalten Sie möglicherweise einen negativen Wert für die verstrichene Zeit .
Da Sie Ereignisse, die mehrere Sekunden dauern, zeitlich festhalten, ist die Funktion time.time () möglicherweise besser für das geeignet, was Sie tun.
time.clock()
misst die CPU-Zeit auf Unix-Systemen, nicht die Wandzeit. Weitere Informationen zum zugrunde liegenden Systemaufruf finden Sie unter Ссылка (beachten Sie den Teil, der besagt, dass er umbrochen werden kann) ).
Wenn Sie die Wandzeit messen möchten, verwenden Sie time.time()
.