Die Anzahl in Sekunden. Bei dir also zum Beispiel 30.ProgrammierLord hat geschrieben:und wie muss ich dann duration eingeben? Einfach die Zahl oder anders?
While-Schleife für eine bestimmte Zeit lang ausführen
Entweder `repeated_call` direkt aufrufen und die gewünschte Funktion übergeben (wobei ich bei der Funktionsübergabe bereits deine nächsten Probleme erwarte) oder den Code aus `repeated_call` übernehmen und in der Zeile, wo ``func()`` steht, die echte Funktion einsetzen. Im Falle der Codeübernahme müsstest du die `duration` dann natürlich auch direkt ersetzen bzw vorab ein ``duration = 30`` oder so machen.ProgrammierLord hat geschrieben:@snafu: Und wie kann ich das jetzt in die While-Schleife einmeddeln?
Hier ist übrigens auch der Einsatz als Dekorator denkbar. Sinnfreies Beispiel:
...ist letztlich aber nicht mehr als eine Spielerei. Soviel Code für eine simple Schleife ist geradezu Javaesk.
Code: Alles auswählen
from __future__ import print_function
from functools import wraps
from time import sleep, time
def repeated_call(duration):
def decorator(func):
@wraps(func)
def wrapper(*args, **kwargs):
stop = time() + duration
while time() < stop:
func(*args, **kwargs)
return wrapper
return decorator
@repeated_call(duration=5)
def repeated_hello(name):
print('Hello', name)
sleep(0.5)
if __name__ == '__main__':
repeated_hello('World')