2016-12-02 26 views
0

私はPythonでカウントダウンクロックを書いていますが、時間モジュールが2番目に下がるようです。正確に1秒が経過したときを正確に判断する方法はありますか?Python:コードの実行時間を1秒に延ばす方法

私の質問のように思えますが、ちょっと混乱しています。私はいくつかのコードを実行する必要があり、最後にプログラムはループを開始し、コードが実行されてから少なくとも1000ミリ秒が経過すると一度終了します

+0

をチェックし、あなたはdatetimeモジュールを試してみたのですか?具体的にはTimeleltaオブジェクト – miraculixx

+0

[Timer](https://docs.python.org/3/library/threading.html#timer-objects)オブジェクトをチェックしてください。 –

+0

タイマーは私がやっていることではうまくいきません。なぜなら、いくつかのコードを実行して、残りの秒が経過するまで待つ必要があるからです。私は秒を待ってからコードを実行したくないので、それはオフになるでしょう – user3246167

答えて

1

あなたが実行したいコードは、その後1 - elapsed timeはあなたに眠るまでの残り時間を与えるだろう、1秒未満かかります知っている場合、whileループは必要ありません。

now = time.time() 
foo() 
time.sleep(1 - (time.time() - now)) 

は算術といくつかのオーバーヘッドがありますが、あなたが要求としてそれは、第二の1/100以内だと厳密に大きいより1秒になります。あなたは、それは関係なくfooにかかる時間、あなたが望む出力を与えないことを確認するために、この数回実行することができます

Time elapsed: 1.00379300117 

import time 
import random 

def foo(): 
    time.sleep(random.random()) 

now = time.time() 
foo() 
time.sleep(1 - (time.time() - now)) 

print "Time elapsed: {}".format(time.time() - now) 

が出力:私は、次のコードを実行しました。

1秒より長くかかることがない限り、スリープ時間は負になり、結果としてIOErrorになります。その場合はチェックする必要があります。

あるいは、1秒が経過した場合は、機能を殺すために必要がある場合は、this question

+0

ありがとう!まさに私が必要なもの! – user3246167

0

デフォルトではtimeモジュールは10^-5秒

import time 
time.time() 
>>> 1480643510.89443 
1

どのモジュールがあなたに限定されているのか分かりませんが、ここではうまくいく方法です。手順は、タイミング関数への参照です

import time 

def procedure: 
    time.sleep(2.5) 

# measure wall time 
t0 = time.time() 
procedure() 
print time.time() - t0, "seconds wall time" 

2.50023603439秒ウォール時間

関連する問題