2011-02-03 99 views
0

我是用Python編程的。我有這樣一個while循環while循環一段時間

b=time.clock() 
while time.clock()-b<3 : 
    input("input") 

我想正好結束後3秒while循環,即使用戶還沒有進入任何東西!我怎樣才能做到這一點?

編輯:那會是什麼,如果我有data=s.recv(1024)其中s是插座,而不是input("input")

這樣的問題是否有一個通用的解決方案?

EDIT2:我使用Python 3

+0

[Python中輸入超時的鍵盤輸入](http://stackoverflow.com/questions/1335507/keyboard-input-with-timeout-in-python) – 2011-02-03 20:34:06

回答

3

input用戶輸入塊,所以你必須執行一些異步方式觸發超時事件(或觸發用戶輸入)

幸運的是,this SO answer似乎只是東西!

編輯:如果你不使用Python 3,你或許應該使用raw_input代替input

+0

謝謝!如果我正在等待消息(s.recv(1024)),會是什麼情況?我也需要解決這個問題。 – Dwayne 2011-02-03 17:14:36

+0

如果你在等待一個套接字,那麼鏈接問題中的`select`解決方案可能是你最好的選擇:http://stackoverflow.com/questions/1335507/keyboard-input-with-timeout-in-python/ 2904057#2904057 – 2011-02-03 17:50:27

0

不能使用inputinput塊等待用戶鍵入內容;當它阻塞時,你沒有任何程序控制。有幾種方法可以自己觸發信號(如here,正如其他地方所建議的那樣),但這有些複雜。

一般而言,在這種情況下,您希望使用raw_input,但它也會遇到同樣的問題。如果你正在編寫一個認真的程序來與用戶交互,你會想要使用一個真正的GUI框架,它可以讓你以更直接的方式來完成這些事情。