ホームページ  >  記事  >  バックエンド開発  >  Python でユーザー入力のタイムアウトを実装するにはどうすればよいですか?

Python でユーザー入力のタイムアウトを実装するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-15 13:30:02337ブラウズ

How Can I Implement a Timeout for User Input in Python?

Python でのユーザー入力のタイムアウト

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。