Python 中的限時用戶輸入
當使用輸入函數請求用戶輸入時,您可能希望限制用戶的時間來回應。這使您可以優雅地處理超時並提供適當的回饋。
使用限時輸入
要實現限時輸入,請考慮以下方法:
阻塞執行緒方法(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
非阻塞執行緒方法(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()
訊號處理方法(類Unix)系統)
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
選擇最適合您的作業系統和封鎖要求的方法。
以上是如何在Python中實現限時用戶輸入?的詳細內容。更多資訊請關注PHP中文網其他相關文章!