標準関数ではできないようです。
調べてみるとユーザーがめいめいに実装しており、シグナルを使ったりスレッドを使ったりと様々でした。
そのなかで汎用性が高く使うのが簡単そうだったのが、pnpnpn/timeout-decorator: Timeout decorator for Python というライブラリを使う方法で、input() 以外にも使えて便利そうでした。ただしシグナルを使っているため Windows では動かない可能性があります。
pnpnpn/timeout を使ったサンプルを示します:
python
1from timeout_decorator import timeout, TimeoutError
2
3TIMEOUT_SEC = 5
4
5@timeout(TIMEOUT_SEC)
6def input_with_timeout(msg=None):
7 return input(msg)
8
9if __name__ == '__main__':
10 try:
11 input_str = input_with_timeout(
12 '{}秒以内に文字を入力してね: '.format(TIMEOUT_SEC))
13 print('{!r} が入力されました'.format(input_str))
14 except TimeoutError:
15 print('時間切れ!')
そのほかの事例:
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。