Zeitlich begrenzte Benutzereingaben in Python
Wenn Sie Benutzereingaben mit der Eingabefunktion einholen, möchten Sie möglicherweise die Zeit begrenzen, die dem Benutzer zur Verfügung steht antworten. Dadurch können Sie Zeitüberschreitungen elegant bewältigen und entsprechendes Feedback geben.
Verwenden einer zeitlich begrenzten Eingabe
Um eine zeitlich begrenzte Eingabe zu implementieren, sollten Sie die folgenden Ansätze in Betracht ziehen:
Blockierender Thread-Ansatz (Python 2/3)
import threading timeout = 10 # In seconds t = threading.Timer(timeout, lambda: print('Sorry, times up.')) t.start() prompt = "You have {} seconds to choose the correct answer...\n".format(timeout) answer = input(prompt) t.cancel() # Stop the timer if the user provides a response
Nicht blockierender Thread-Ansatz (Python 3)
import sys import msvcrt # For Windows import time # For Unix def input_with_timeout(prompt, timeout, timer=time.monotonic): sys.stdout.write(prompt) sys.stdout.flush() endtime = timer() + timeout result = [] while timer() < endtime: if msvcrt.kbhit(): # For Windows # Handle keyboard input else: # For Unix ready, _, _ = select.select([sys.stdin], [], [], timeout) if ready: return sys.stdin.readline().rstrip('\n') raise TimeoutExpired()
Signalverarbeitungsansatz (Unix-ähnlich Systeme)
import signal def alarm_handler(signum, frame): raise TimeoutExpired() def input_with_timeout(prompt, timeout): signal.signal(signal.SIGALRM, alarm_handler) signal.alarm(timeout) try: return input(prompt) finally: signal.alarm(0) # Cancel the alarm
Wählen Sie den Ansatz, der am besten zu Ihrem Betriebssystem passt Sperranforderungen.
Das obige ist der detaillierte Inhalt vonWie kann ich zeitlich begrenzte Benutzereingaben in Python implementieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!