Python では、raw_input() 関数はユーザーに入力を求めますが、ユーザーが何かを入力するまで無期限に待機します。ユーザー入力に時間制限を課す必要がある状況では、スレッド モジュールを使用した解決策が利用できます。
ユーザーが提案した raw_input_with_timeout() 関数は、次の 2 つの引数を受け取ります: プロンプト (表示されるテキスト)ユーザーに)とタイムアウト(秒単位の時間制限)。指定されたタイムアウト後にメイン スレッドに割り込むタイマー スレッドを開始します。
コードの改良版は次のとおりです。
import threading def raw_input_with_timeout(prompt, timeout=30.0): print(prompt, end=' ') timer = threading.Timer(timeout, thread.interrupt_main) astring = None try: timer.start() astring = input(prompt) except KeyboardInterrupt: pass timer.cancel() return astring
タイムアウト前にユーザーが入力を入力すると、入力は文字列として返されます。タイムアウトに達した場合は、None が返され、指定された時間枠内にユーザーが入力を提供しなかったことを示します。
この解決策は、ユーザーの入力がそれほど遅くないことを前提としていることに注意してください。入力の遅さを考慮する必要がある場合は、文字入力のたびに終了時刻 (タイムアウトが発生した時刻) を再計算できます。
以上がPython でユーザー入力のタイムアウトを実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。