0

Pythonにタスクがあり、このタスクを初めて実行します。60秒後に同じタスクを実行しますが、最後に1回だけ実行します。

4

2 に答える 2

3

1回目はタスクを直接呼び出し、2回目はタイマーから呼び出します。toの呼び出しwx.CallLaterはブロックされないため、タイマーの実行中、アプリケーションは応答性を維持します。

do_task()
wx.CallLater(60 * 1000, do_task)

http://www.wxpython.org/docs/api/wx.CallLater-class.htmlを参照してください

于 2012-04-08T15:12:05.467 に答える
0

ギャップを空けて2回何かをしたい場合、最も簡単な方法は少し寝ることです。

from time import sleep

do_task()
sleep(60)
do_task()

正確に60秒が必要な場合、これは適切ではないことに注意してください。

実際の一時停止時間は、キャッチされたシグナルがそのシグナルのキャッチルーチンの実行後にsleep()を終了するため、要求された時間よりも短い場合があります。また、システム内の他のアクティビティのスケジュールが原因で、一時停止時間が任意の量だけ要求されるよりも長くなる場合があります。

その場合、たとえば、睡眠前の時間を保存して比較し、適切な時間が経過したことを確認することもできますが、ほとんどの場合、それほど正確である必要はありません。

これにより実行が一時停止することに注意してください。他の処理を行っている状態でこれを実行する場合は、スレッド化を調べる必要があります。

于 2012-04-03T22:34:33.467 に答える