На этот вопрос уже есть ответ:
Я хочу сделать raw_input ('Введите что-то :. ')
. Я хочу, чтобы он спал в течение 3 секунд, и если нет ввода, отмените запрос и запустите оставшуюся часть кода. Затем код зацикливается и снова реализует raw_input
. Я также хочу, чтобы он сломался, если пользователь вводит что-то вроде 'q'.
Есть простое решение, которое не использует потоки (по крайней мере, явно): используйте select , чтобы узнать, когда что-то нужно прочитать из stdin:
import sys
from select import select
timeout = 10
print "Enter something:",
rlist, _, _ = select([sys.stdin], [], [], timeout)
if rlist:
s = sys.stdin.readline()
print s
else:
print "No input. Moving on..."
Edit [0]: очевидно, этот не будет работать в Windows , поскольку базовая реализация select () требует сокета, а sys.stdin - нет. Спасибо за предупреждение, @Fookatchu.