私はPythonでカウントダウンクロックを書いていますが、時間モジュールが2番目に下がるようです。正確に1秒が経過したときを正確に判断する方法はありますか?Python:コードの実行時間を1秒に延ばす方法
私の質問のように思えますが、ちょっと混乱しています。私はいくつかのコードを実行する必要があり、最後にプログラムはループを開始し、コードが実行されてから少なくとも1000ミリ秒が経過すると一度終了します
私はPythonでカウントダウンクロックを書いていますが、時間モジュールが2番目に下がるようです。正確に1秒が経過したときを正確に判断する方法はありますか?Python:コードの実行時間を1秒に延ばす方法
私の質問のように思えますが、ちょっと混乱しています。私はいくつかのコードを実行する必要があり、最後にプログラムはループを開始し、コードが実行されてから少なくとも1000ミリ秒が経過すると一度終了します
あなたが実行したいコードは、その後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
ありがとう!まさに私が必要なもの! – user3246167
デフォルトではtime
モジュールは10^-5秒
import time
time.time()
>>> 1480643510.89443
どのモジュールがあなたに限定されているのか分かりませんが、ここではうまくいく方法です。手順は、タイミング関数への参照です
import time
def procedure:
time.sleep(2.5)
# measure wall time
t0 = time.time()
procedure()
print time.time() - t0, "seconds wall time"
2.50023603439秒ウォール時間
。
をチェックし、あなたはdatetimeモジュールを試してみたのですか?具体的にはTimeleltaオブジェクト – miraculixx
[Timer](https://docs.python.org/3/library/threading.html#timer-objects)オブジェクトをチェックしてください。 –
タイマーは私がやっていることではうまくいきません。なぜなら、いくつかのコードを実行して、残りの秒が経過するまで待つ必要があるからです。私は秒を待ってからコードを実行したくないので、それはオフになるでしょう – user3246167