2017-11-23 21 views
0

私はちょうど私の仕事のPCに小さなタイマーをコーディングしたかった。面白いことは、カウンターが遅すぎるので、それは必要以上に長く実行されるということです。私は本当に混乱しています。更新の間隔が小さくなればなるほど、遅延は大きくなります。私のパソコンは遅すぎますか?このidkを実行している間、CPUは約30%です。 python3.6.3Pythonカウンターが遅すぎる

import time 
def timer(sec): 
    start = sec 
    print(sec) 
    while sec > 0: 
     sec = sec-0.1   #the smaller this value, the slower 
     time.sleep(0.1) 
     print(round(sec,2)) 
print("Done! {} Seconds passed.".format(start)) 



start = time.time()   #For Testing 
timer(10) 
print(time.time()-start) 

答えて

0

あなたはtime.time()で通常の演算子を使用することができ、この方法を試してみてくださいあなたはトリガーシステムコール(カーネルへの呼び出しを必要とし、処理スリーピング

import time 

start = time.time() 

seconds = 5 

while True: 
    if start - time.time() > seconds: 
    print(seconds + " elapsed.") 
1

そのカーネルに手を差し伸べるためのハードウェアの中断)、ハードウェアクロックの中断などがあります。スリーピングはCPUの多くの計算ではないかもしれませんが、ハードウェアの中断とカーネルがプロセスを処理するのを待つことは、複数のCPUサイクルを要します。

むしろ時間の一定の単位を待っているよりも、私はあなたが(違いを次のステップにそれを丸め、現在の時刻を取得し、取得することにより)次のマイルストーンをヒットするために必要な時間

+0

あなたを待つことをお勧めスケジューラを見たいかもしれません:https://docs.python.org/3.6/library/sched.html –