0

以下のような機能の実装を考えています。

timeout = 60 second
timer = 0
while (timer not reach timeout):
    do somthing
    if another thing happened:
         reset timer to 0

私の質問は、タイマーのものを実装する方法ですか? 複数のスレッドまたは特定の lib?

ソリューションが、サードパーティの派手なパッケージではなく、python 組み込み lib に基づいていることを願っています。

4

2 に答える 2

1

あなたが説明したことについてスレッドは必要ないと思います。

import time

timeout = 60
timer = time.clock()
while timer + timeout < time.clock():
    do somthing
    if another thing happened:
        timer = time.clock()

ここでは、すべての反復をチェックします。

スレッドが必要になる唯一の理由は、何かに時間がかかりすぎて反復の途中で停止したい場合です。

于 2013-11-09T21:08:25.760 に答える
0

私は次のイディオムを使用します。

from time import time, sleep

timeout = 10 # seconds

start_doing_stuff()
start = time()
while time() - start < timeout:
    if done_doing_stuff():
        break
    print "Timeout not hit. Keep going."
    sleep(1) # Don't thrash the processor
else:
    print "Timeout elapsed."
    # Handle errors, cleanup, etc
于 2013-11-09T21:21:20.943 に答える