2010-12-29 6 views
4

Ich muss eine Schleife während einer genauen Dauer ausführen. Zum Beispiel würde der Code, den ich versuche, so aussehen:Python: Eine Schleife während einer genauen Dauer

initialize and lauch timer 

while timer<10000sec: 
    do things 

Wissen Sie, wie man das macht?

Danke :)

+0

Sollten 'Dinge' nach einer bestimmten Zeit * abgebrochen * werden oder sollte sie zuerst beendet werden? – plundra

+0

Das ganze "Do thing" muss gemacht werden, also darf es am Ende des Timers nicht abgebrochen werden. – Nix

+0

Wie genau müssen Sie sein und warum? –

Antwort

6
stop = time.time()+10000 
while time.time() < stop: 
    do things 

Dies erfordert, dass jeder Lauf durch die Schleife ausreichend kurz ist, so dass Sie die aktuelle Zeit oft genug (für die Exaktheit, die Sie erreichen wollen) lesen.

+0

Wenn andererseits der Schleifenkörper sehr kurz ist, kann der Aufruf von 'time.time()' bei jeder Iteration die Laufzeit dominieren. Was ich dem OP zu sagen versuche ist, dass, wenn die Leistung hier kritisch ist, er einen alternativen Ansatz in Erwägung ziehen könnte –

+0

Dieser Code funktioniert perfekt. Aber ich möchte eine Methode, die weniger Energie verbraucht, wenn sie existiert. – Nix

+0

@Nix: Sie müssen erklären, was "Dinge tun" eigentlich ist. Bei einer guten Programmierung sollten Sie blockieren, wenn Sie darauf warten, dass etwas passiert, anstatt zu pollen: Dieser (schlechte) Ansatz wird "busy wait" genannt. Wenn Sie beschäftigt warten müssen, können Sie Anrufe von time.sleep (delay) in die Schleife setzen, wobei die Verzögerung z.B. 0.2. –

Verwandte Themen