1

繰り返しタイマーを 5 分間隔でスケジュールするにはどうすればよいですか。00 秒で発火し、00 で繰り返します。わかりました。ハード リアルタイムではありませんが、システム ラグで可能な限り近くなります。ラグの蓄積を避けて 00 に近づけようとしています。

言語: Python、OS: WinXP x64

システムの分解能は 25ms です。

どんなコードでも役に立ちます、tia

4

2 に答える 2

2

threading.Timerよりも正確に行う方法がわかりません。これは「ワンショット」ですが、そのようにスケジュールした関数は、最初に、さらに 300 秒後にすぐに再スケジュールする必要があることを意味します。time.time(毎回正確な時間を測定し、それに応じて次のスケジュール遅延を変更することで、精度を高めることができます)。

于 2010-08-24T03:31:58.963 に答える
0

次の 2 つのコード サンプルの時間出力を比較してみてください。

コード例 1

import time
delay = 5

while True:
    now = time.time()
    print time.strftime("%H:%M:%S", time.localtime(now))

    # As you will observe, this will take about 2 seconds,
    # making the loop iterate every 5 + 2 seconds or so.
    ## repeat 5000 times
    for i in range(5000):
        sum(range(10000))

    # This will sleep for 5 more seconds
    time.sleep(delay)

コード例 2

import time
delay = 5

while True:
    now = time.time()
    print time.strftime("%H:%M:%S", time.localtime(now))

    # As you will observe, this will take about 2 seconds,
    # but the loop will iterate every 5 seconds because code 
    # execution time was accounted for.
    ## repeat 5000 times
    for i in range(5000):
        sum(range(10000))

    # This will sleep for as long as it takes to get to the
    # next 5-second mark
    time.sleep(delay - (time.time() - now))
于 2010-08-24T04:03:33.320 に答える