2011-02-03 29 views
0

私はPythonでプログラミングしています。私は、ユーザーがまだ何も入っていない場合であっても、正確に3秒後にwhileループを終了するように、whileループwhileループwhile while

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

を持っています!どうやってやるの?

編集:input("input")ではなく、data=s.recv(1024)がソケットの場合はどうなりますか?

このような問題の一般的な解決法はありますか?

EDIT2:あなたはタイムアウトイベントをトリガするためにいくつかの非同期の方法を実装する必要が(またはユーザー入力のトリガ)

ますので、私は、Pythonの3ユーザの入力に

+0

[キーボード入力とPythonでのタイムアウト]の複製が可能です(http://stackoverflow.com/questions/1335507/keyboard-input-with-timeout-in-python) –

答えて

3

inputブロックを使用しています幸いにも、this SO answerはちょうど事を持っているようです!

編集:あなたは、Python 3を使用していない場合、あなたはおそらくinputを使用して、raw_inputの代わりinput

+0

ありがとう!そして、私がメッセージ(s.recv(1024))を待っていたらどうなりますか?私はまた、この問題の解決策が必要です。 – Dwayne

+0

ソケットを待っている場合、リンクされた質問の 'select'ソリューションがおそらくあなたの最善の策です:http://stackoverflow.com/questions/1335507/keyboard-input-with-timeout-in-python/ 2904057#2904057 –

+0

もう一度おねがいします!これは参考になります。 – Dwayne

0

あなたがすることはできませんを使用する必要があります。 inputユーザーが何かを入力するのを待っているブロック。それがブロックされている間、何が起こっているのかをプログラムで制御することはできません。自分で信号をトリガーする方法はありますが(here、他の場所で示唆されているように)、それはひどく複雑です。

この状況では、通常同じ問題が発生しますが、raw_inputを使用します。また、ユーザーと対話するための深刻なプログラムを作成している場合は、実際のGUIフレームワークを使用することをお勧めします。はより簡単な方法でこれらを実行できます。

+0

ありがとう!私はPython 3を使用しているので、私は入力を使用しなければならないと思う。私がメッセージ(s.recv(1024))を待っていたらどうなりますか? – Dwayne