Ausführen einer while-Schleife zwischen definierter Zeit

8

Ich versuche, eine while-Schleife nur unter einer definierten Zeit wie dieser auszuführen, aber die while-Schleife setzt ihre Ausführung fort, selbst wenn wir über dem definierten Limit sind:

%Vor%

Wie kann die Schleife gestoppt werden, sobald wir das Limit überschritten haben?

Danke

    
Finger twist 06.07.2013, 10:53
quelle

4 Antworten

8

Sie aktualisieren den Wert von minute innerhalb der while-Schleife nicht richtig. Sie sollten den Wert von now in Schleife neu berechnen und dann die neue now.minute auf minute zuweisen.

%Vor%     
Ashwini Chaudhary 06.07.2013, 10:55
quelle
4

Sie müssen die Zeit in Ihrer Schleife neu bestimmen. Die Variable minute ist statisch , sie wird nicht aktualisiert, um die Zeit zu ändern.

Wenn Sie für eine bestimmte Menge Zeit eine Schleife machen möchten, beginnen Sie stattdessen mit time.time() und berechnen dann die verstrichene Zeit:

%Vor%

druckt 'test' alle 5 Sekunden für 5 Minuten (300 Sekunden).

Sie können das natürlich auch mit datetime -Objekten machen, aber der time.time() -Aufruf ist etwas einfacher zu handhaben.

Um bis zu wiederholen, kann datetime wie folgt verwendet werden:

%Vor%

Beachten Sie, dass die Schleife jedes Mal eine Methode aufrufen muss, um zu bestimmen, wie die aktuelle Zeit ist.

    
Martijn Pieters 06.07.2013 10:54
quelle
1

Der Vorschlag der Schleife sollte datetime.datetime.now().minute - minute < 46 lauten und der Rumpf der Schleife sollte nicht minute aktualisieren.

    
Bleeding Fingers 06.07.2013 11:47
quelle
0

Sie speichern die aktuelle Uhrzeit in now variable. Stattdessen sollten Sie immer die aktuelle Zeit innerhalb der Schleife abrufen:

%Vor%     
pkacprzak 06.07.2013 10:57
quelle

Tags und Links