我是用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
我是用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
input
用戶輸入塊,所以你必須執行一些異步方式觸發超時事件(或觸發用戶輸入)
幸運的是,this SO answer似乎只是東西!
編輯:如果你不使用Python 3,你或許應該使用raw_input
代替input
謝謝!如果我正在等待消息(s.recv(1024)),會是什麼情況?我也需要解決這個問題。 – Dwayne 2011-02-03 17:14:36
如果你在等待一個套接字,那麼鏈接問題中的`select`解決方案可能是你最好的選擇:http://stackoverflow.com/questions/1335507/keyboard-input-with-timeout-in-python/ 2904057#2904057 – 2011-02-03 17:50:27
不能使用input
。 input
塊等待用戶鍵入內容;當它阻塞時,你沒有任何程序控制。有幾種方法可以自己觸發信號(如here,正如其他地方所建議的那樣),但這有些複雜。
一般而言,在這種情況下,您希望使用raw_input
,但它也會遇到同樣的問題。如果你正在編寫一個認真的程序來與用戶交互,你會想要使用一個真正的GUI框架,它可以讓你以更直接的方式來完成這些事情。
[Python中輸入超時的鍵盤輸入](http://stackoverflow.com/questions/1335507/keyboard-input-with-timeout-in-python) – 2011-02-03 20:34:06