2010-06-16 89 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()