2011-12-29 22 views
0
while True: 
    now = datetime.datetime.now() 
    if now.second == 1: 
     print "One" 

私のプログラム印刷約7回。一度印刷するにはどうすればいいですか?Python 2.7 Whileループ時間

+0

私の最初の考えはそれ 'time.sleepは、(1)'の後に、それはおそらく悪だようにすることです:P – Interrobang

+2

はよろしいです、それは約7倍ですか?まあ、それは正直言って非常に低い数字です。つまり、コンピュータの現在の値の確認には約0.14秒かかります。 ところで、あなたの見積もりの​​字下げを修正してください。 – Gandi

+0

@ガンディー、良い点。 stdout以上のものは何千ものものを扱うことができます。 – Ben

答えて

2

コンピュータが速すぎます。

現在の秒が1回であるかどうかをテストします。それは非常に速いので、1秒未満でこれを行うことができ、より多くの出力を得ることができます。

それは各反復の後に待っててください:

while True: 
    now = datetime.datetime.now() 
    if now.second == 1: 
     print "One" 
     time.sleep(59) # wait 59 seconds after success 
    time.sleep(1) # wait 1 second after each fail 

このプログラムは、ほとんどの時間をスリープします。あなたが何か便利なことをしたいのであれば、それは別のプログラムになります。

+0

time.sleep(2)#wait 2 seconds で十分ではありませんか? (あまりにも遅いコンピュータの場合...) – jimifiki

+0

プラス 'time.sleep'はちょっと愚かですが、それはシステムにも依存しなければならないので、不正確です。あなたはそれらの時間を半分にする方が良いです。 – Ben

0

以前に印刷に使用した値を保存するのはどうですか?

previous = None 
while True: 
    now = datetime.datetime.now() 
    if now.second == 1 and now.second != previous: 
     print "One" 
     previous = now.second # store the last value 
+1

本当ですか? previousは常に1 –

+0

now.secondを前に格納する代わりに、今すぐストアします。 –