Вы можете использовать неблокирующую функцию для чтения ввода пользователя.
Это решение для Windows:
import msvcrt
import time
while True:
# test if there are keypresses in the input buffer
while msvcrt.kbhit():
# read a character
print msvcrt.getch()
# no keypresses, sleep for a while...
time.sleep(1)
Чтобы сделать что-то подобное в Unix, который читает строку за раз, в отличие от версии для Windows, читающей char по char (спасибо Aaron Digulla за предоставление ссылки на форум пользователей python):
import sys
import select
i = 0
while i < 10:
i = i + 1
r,w,x = select.select([sys.stdin.fileno()],[],[],2)
if len(r) != 0:
print sys.stdin.readline()
Смотри также: http://code.activestate.com/recipes/134892/