Ввод с клавиатуры с тайм-аутом?

Как Вы предложили бы пользователю некоторый вход, но испытывающий таймаут после N секунды?

Google указывает на почтовый поток об этом по http://mail.python.org/pipermail/python-list/2006-January/533215.html, но это, кажется, не работает. Оператор, в котором тайм-аут происходит, неважно, является ли это a sys.input.readline или timer.sleep(), Я всегда добираюсь:

: [raw_]input expected at most 1 arguments, got 2

который так или иначе кроме сбоев для ловли.

52
задан martineau 7 September 2019 в 03:09
поделиться

1 ответ

Пример, с которым вы связались, неверен, и исключение фактически возникает при вызове обработчика аварийных сигналов, а не при чтении блоков. Лучше попробуйте следующее:

import signal
TIMEOUT = 5 # number of seconds your want for timeout

def interrupted(signum, frame):
    "called when read times out"
    print 'interrupted!'
signal.signal(signal.SIGALRM, interrupted)

def input():
    try:
            print 'You have 5 seconds to type in your stuff...'
            foo = raw_input()
            return foo
    except:
            # timeout
            return

# set alarm
signal.alarm(TIMEOUT)
s = input()
# disable the alarm after success
signal.alarm(0)
print 'You typed', s
31
ответ дан 7 November 2019 в 09:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: