216 Stimmen

Bestimmten Code alle n Sekunden ausführen

Gibt es eine Möglichkeit, z. B. zu drucken Hello World! alle n Sekunden? Zum Beispiel würde das Programm jeden Code durchlaufen, den ich habe, und dann, wenn 5 Sekunden vergangen sind (mit time.sleep() ) würde er diesen Code ausführen. Ich würde damit allerdings eine Datei aktualisieren und nicht Hello World drucken.

Zum Beispiel:

startrepeat("print('Hello World')", .01) # Repeats print('Hello World') ever .01 seconds

for i in range(5):
    print(i)

>> Hello World!
>> 0
>> 1
>> 2
>> Hello World!
>> 3
>> Hello World!
>> 4

12voto

jfs Punkte 370717

Hier ist eine Version, bei der nicht jedes Mal ein neuer Thread erstellt wird n Sekunden:

from threading import Event, Thread

def call_repeatedly(interval, func, *args):
    stopped = Event()
    def loop():
        while not stopped.wait(interval): # the first call is in `interval` secs
            func(*args)
    Thread(target=loop).start()    
    return stopped.set

Das Ereignis wird verwendet, um die Wiederholungen zu stoppen:

cancel_future_calls = call_repeatedly(5, print, "Hello, World")
# do something else here...
cancel_future_calls() # stop future calls

Siehe Verbesserung der aktuellen Implementierung eines setInterval python

1voto

Kit Punkte 28147

Sie können einen separaten Thread starten, dessen einzige Aufgabe es ist, 5 Sekunden lang zu zählen, die Datei zu aktualisieren und dies zu wiederholen. Sie möchten nicht, dass dieser separate Thread Ihren Hauptthread beeinträchtigt.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X