Ich mache eine digitale Uhr in Python für Minecraft Pi-Ausgabe. Ich benutze eine einzelne while-Schleife, die viel Code enthält - es dauert eine kurze Zeit, um einen Durchlauf davon auszuführen, aber es sind ein paar Millisekunden mehr als ich will, und das ist verheerend auf meiner Uhr. Gibt es eine Möglichkeit, eine While-Schleife vollständig genau zu machen? Ich verwende zwei Werte von time.sleep(1)
, aber es dauert länger als zwei Sekunden, um ausgeführt zu werden.Wie man While-Loops braucht eine bestimmte Zeit nehmen
Beispiel:
while True:
start = time.time()
for _ in range(5):
1000**3
time.sleep(1)
print (time.time() - start)
, die mehr als 1 Sekunde pro Schleife dauert.
1.00102806091
1.00028204918
1.00103116035
1.00051879883
1.0010240078
1.00102782249
Dieser Fehler sammelt sich im Laufe der Zeit. Wie kann ich verhindern, dass es driftet?
Jede Wiederholung Ihrer Schleife dauert 2 Sekunden (nach 'time.sleep()') + die Zeit, die Ihr Code in der while zur Ausführung benötigt. 'time.sleep (n)' stoppt die Ausführung Ihres Codes mit 'n' Sekunden –
Wie kommt es, dass es so viel negatives Feedback gibt? Was mache ich falsch? –
Nun @I.Scott eine Sache, die ich sehe, ist, dass Sie keinen Code in Ihre Frage gestellt haben. Brauchen Sie immer Code in einer Frage? Nein überhaupt nicht. Aber in Ihrem Fall kann der Ausschluss von Code aus Ihrer Frage die Nachricht senden, dass jemand Code für Sie schreiben soll, welcher _way_ off-topic hier ist. Wenn Sie etwas Code haben, schlage ich vor, Ihre Frage hinzuzufügen, um zu zeigen, dass Sie zumindest versucht haben, Ihr Problem zu lösen. –