Python での時間制限のあるユーザー入力
input 関数を使用してユーザー入力を求める場合、ユーザーが入力できる時間を制限したい場合があります。応答すること。これにより、タイムアウトを適切に処理し、適切なフィードバックを提供できるようになります。
時間制限付き入力の使用
時間制限付き入力を実装するには、次のアプローチを検討してください。
スレッドをブロックするアプローチ (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 中国語 Web サイトの他の関連記事を参照してください。