2010-06-16 70 views
1

我想有类似下面的伪代码的东西:热蟒蛇输入回路

while input is not None and timer < 5: 
    input = getChar() 
    timer = time.time() - start 

if timer >= 5: 
    print "took too long" 
else: 
    print input 

反正要做到这一点,不必穿线?我想要一个输入方法,它返回自上次调用以来输入的内容,如果没有输入内容,则返回Nonenull)。

+0

如果使用非阻塞IO消息,则最终会出现热循环 - 一种使用所有可用处理能力进行输入的热循环。如果时间太长,使用'threading.Timer'触发故障条件会更好。 – 2010-06-16 01:23:37

+0

您可以在很短的时间内('0.1秒左右',如果您需要低延迟时间可能会更少)“time.sleep”,以避免出现热循环,或至少冷却它。 – intuited 2010-06-16 01:27:58

+0

我*想*热循环。这就是问题所在。我可以用'time.sleep'或其他什么来减慢速度。 – 2010-06-16 01:30:24

回答

4

对* nix你想要selectsys.stdin。在Windows上,您需要msvcrt.kbhit()msvcrt.getch()