Wie kann ich eine zeitliche Verzögerung in Python machen?


Ich würde gerne wissen, wie man ein Python-Skript zeitlich verzögert.



Answers


import time
time.sleep(5)   # delays for 5 seconds. You can Also Use Float Value.

Hier ist ein weiteres Beispiel, wo etwas ungefähr einmal pro Minute ausgeführt wird:

import time 
while True:
    print("This prints once a minute.")
    time.sleep(60)   # Delay for 1 minute (60 seconds).



Sie können die Funktion sleep () im Zeitmodul verwenden. Es kann ein Float-Argument für eine Subsekunden-Auflösung benötigen.

from time import sleep
sleep(0.1) # Time in seconds.



Bitte lesen Sie https://web.archive.org/web/20090207081238/http://faqts.com/knowledge_base/view.phtml/aid/2609/fid/378 , was Ihnen weiterhelfen kann:

Probieren Sie die Schlaffunktion im Zeitmodul aus.

import time
time.sleep(60)

Und setzen Sie dies in eine while Schleife und eine Anweisung wird nur auf der Minute ausgeführt ... Das erlaubt Ihnen, eine Anweisung in vordefinierten Intervallen auszuführen, unabhängig davon, wie lange der Befehl dauert (solange es weniger als eine Minute oder 5 oder 60 Minuten dauert) oder was auch immer Sie darauf eingestellt haben. Zum Beispiel wollte ich einmal pro Minute einen Ping ausführen. Wenn ich nur time.sleep(60) oder time.sleep(45) gerade, wird der Ping nicht immer die gleiche Zeit dauern. Hier ist der Code :)

time.sleep(time.localtime(time.time())[5])

Die [5] zieht nur die Sekunden aus dem time.localtime() von time.localtime() .

Das Tolle an time.sleep ist, dass es Fließkommazahlen unterstützt!

import time
time.sleep(0.1) 

http://python.org/doc/current/lib/module-time.html




Ein bisschen Spaß mit schläfrigen Generator.

Die Frage betrifft die Zeitverzögerung. Es kann eine feste Zeit sein, aber in einigen Fällen benötigen wir möglicherweise eine seit dem letzten Mal gemessene Verzögerung. Hier ist eine mögliche Lösung:

Verzögerung seit dem letzten Mal gemessen (regelmäßig aufwachen)

Die Situation kann sein, wir wollen etwas so regelmäßig wie möglich machen und wir wollen uns nicht mit den ganzen last_time , next_time Sachen rund um unseren Code next_time .

Summer-Generator

Folgender Code ( sleepy.py ) definiert buzzerngeneratorator

import time
from itertools import count

def buzzergen(period):
    nexttime = time.time() + period
    for i in count():
        now = time.time()
        tosleep = nexttime - now
        if tosleep > 0:
            time.sleep(tosleep)
            nexttime += period
        else:
            nexttime = now + period
        yield i, nexttime

Regelmäßig buzzergen aufrufen

from sleepy import buzzergen
import time
buzzer = buzzergen(3) # planning to wake up each 3 seconds
print time.time()
buzzer.next()
print time.time()
time.sleep(2)
buzzer.next()
print time.time()
time.sleep(5) # sleeping a bit longer than usually
buzzer.next()
print time.time()
buzzer.next()
print time.time()

und es laufen wir sehen:

1400102636.46
1400102639.46
1400102642.46
1400102647.47
1400102650.47

Wir können es auch direkt in einer Schleife verwenden:

import random
for ring in buzzergen(3):
    print "now", time.time()
    print "ring", ring
    time.sleep(random.choice([0, 2, 4, 6]))

und wir könnten es sehen:

now 1400102751.46
ring (0, 1400102754.461676)
now 1400102754.46
ring (1, 1400102757.461676)
now 1400102757.46
ring (2, 1400102760.461676)
now 1400102760.46
ring (3, 1400102763.461676)
now 1400102766.47
ring (4, 1400102769.47115)
now 1400102769.47
ring (5, 1400102772.47115)
now 1400102772.47
ring (6, 1400102775.47115)
now 1400102775.47
ring (7, 1400102778.47115)

Wie wir sehen, ist dieser Summer nicht zu starr und erlaubt es uns, regelmäßig schläfrige Intervalle aufzuholen, selbst wenn wir verschlafen und aus dem regulären Zeitplan aussteigen.




Wie kann ich eine zeitliche Verzögerung in Python machen?

In einem einzigen Thread schlage ich die Schlaffunktion vor:

>>> from time import sleep

>>> sleep(4)

Dadurch wird die Verarbeitung des Threads, in dem es vom Betriebssystem aufgerufen wird, unterbrochen, sodass andere Threads und Prozesse ausgeführt werden können, während sie inaktiv sind.

Verwenden Sie es für diesen Zweck, oder einfach um die Ausführung einer Funktion zu verzögern. Beispielsweise:

>>> def party_time():
...     print('hooray!')
... 
>>> sleep(3); party_time()
hooray!

"Hurra!" gedruckt 3 Sekunden nachdem ich Enter gedrückt habe .

Beispiel, das den sleep mit mehreren Threads und Prozessen verwendet

Auch hier unterbricht sleep den Thread - er verwendet fast keine Rechenleistung.

Um dies zu demonstrieren, erstellen Sie ein Skript wie dieses (Ich habe das zum ersten Mal in einer interaktiven Python 3.5-Shell versucht, aber Unterprozesse können aus irgendeinem Grund die Funktion party_later nicht finden):

from concurrent.futures import ThreadPoolExecutor, ProcessPoolExecutor, as_completed
from time import sleep, time

def party_later(kind='', n=''):
    sleep(3)
    return kind + n + ' party time!: ' + __name__

def main():
    with ProcessPoolExecutor() as proc_executor:
        with ThreadPoolExecutor() as thread_executor:
            start_time = time()
            proc_future1 = proc_executor.submit(party_later, kind='proc', n='1')
            proc_future2 = proc_executor.submit(party_later, kind='proc', n='2')
            thread_future1 = thread_executor.submit(party_later, kind='thread', n='1')
            thread_future2 = thread_executor.submit(party_later, kind='thread', n='2')
            for f in as_completed([
              proc_future1, proc_future2, thread_future1, thread_future2,]):
                print(f.result())
            end_time = time()
    print('total time to execute four 3-sec functions:', end_time - start_time)

if __name__ == '__main__':
    main()

Beispielausgabe von diesem Skript:

thread1 party time!: __main__
thread2 party time!: __main__
proc1 party time!: __mp_main__
proc2 party time!: __mp_main__
total time to execute four 3-sec functions: 3.4519670009613037

Multithreading

Sie können eine Funktion auslösen, die zu einem späteren Zeitpunkt in einem separaten Thread mit dem Timer Threading-Objekt aufgerufen wird:

>>> from threading import Timer
>>> t = Timer(3, party_time, args=None, kwargs=None)
>>> t.start()
>>>
>>> hooray!

>>> 

Die leere Zeile zeigt an, dass die Funktion auf meinen Standard gedruckt wurde und ich musste die Eingabetaste drücken, um sicherzustellen, dass ich eine Eingabeaufforderung hatte.

Der Vorteil dieser Methode besteht darin, dass ich während des Wartens des Timer Threads andere Dinge tun konnte, in diesem Fall Enter einmal drücken - bevor die Funktion ausgeführt wurde (siehe die erste leere Eingabeaufforderung).

In der Multiprocessing-Bibliothek befindet sich kein entsprechendes Objekt. Sie können einen erstellen, aber wahrscheinlich gibt es ihn nicht. Ein Unter-Thread ist für einen einfachen Timer viel sinnvoller als ein ganz neuer Unterprozess.




Die tkinter-Bibliothek in der Python-Standardbibliothek ist ein interaktives Werkzeug, das Sie importieren können. Im Grunde können Sie Buttons und Boxen und Popups erstellen, die als Fenster angezeigt werden, die Sie mit Code bearbeiten.

Wenn Sie tkinter verwenden, verwenden Sie TIME.SLEEP() da es Ihr Programm TIME.SLEEP() . Das ist mir passiert. Verwenden root.after() stattdessen root.after() und ersetzen Sie die Werte für viele Sekunden durch Millisekunden. ZB ist time.sleep(1) äquivalent zu root.after(1000) in tkinter.

Ansonsten, time.sleep() , worauf viele Antworten hingewiesen haben, ist der time.sleep() Weg.




Um eine Zeitverzögerung zu erzeugen, sollten Sie das Zeitmodul importieren. Und mit diesem Modul müssen Sie nur schreiben:

time.sleep(The amount of time)

Zum Beispiel, wenn Sie eine Zeitverzögerung von einer Sekunde setzen möchten, bevor der Computer eine andere Leitung führt, sollten Sie setzen:

time.sleep(1)
print('Hello World!')

Das ist alles :)




Gute Frage.

Sie können es erhalten, indem Sie einfach Folgendes tun:

from time import sleep

# doing stuff
sleep(0.5) # sleeping half a second (sleep() uses seconds, but you can also use floats)
# doing stuff..

Hoffe, ich könnte helfen.




Verzögerungen werden mit der Zeitbibliothek gemacht , speziell die Funktion time.sleep () ...

Um es nur eine Sekunde warten zu lassen:

from time import sleep
sleep(1)

Dies funktioniert, weil:

from time import sleep

Sie extrahieren die Schlaffunktion nur aus der Zeitbibliothek, was bedeutet, dass Sie sie einfach aufrufen können mit:

sleep(seconds)

anstatt tippen zu müssen:

time.sleep()

Das ist unhandlich lang zu tippen.

Mit dieser Methode erhalten Sie keinen Zugriff auf die anderen Funktionen der Zeitbibliothek, und Sie können keine Variable namens sleep verwenden. aber Sie könnten eine Variable namens time erstellen.

Doing von [library] import [function] (, [function2]) ist großartig, wenn Sie nur bestimmte Teile eines Moduls wollen.

Du könntest es genauso machen wie:

import time
time.sleep(1)

und Sie hätten Zugriff auf die anderen Funktionen der Zeitbibliothek wie time.clock () , solange Sie die Zeit eingeben . Funktion, aber Sie konnten die Variable Zeit nicht erstellen.




Verzögerungen können mithilfe von drei Methoden implementiert werden.

Fangen wir mit dem einfachsten an:

import time
time.sleep(5) #delay for 5 seconds.

Die zweite Methode zur Verzögerung wäre die Verwendung der impliziten Warte-Methode.

 driver.implicitly_wait(5)

Die dritte Methode ist sinnvoller, wenn Sie warten müssen, bis eine bestimmte Aktion abgeschlossen ist oder bis ein Element gefunden wird.

self.wait.until(EC.presence_of_element_located((By.ID, 'UserName'))



Verwenden von Pygame

import pygame
pygame.init()
while True:
    pygame.time.wait(1000)
    print("This prints every second.")
    print("Please note that this method uses milliseconds.")