周期に対してタスク実行時間が長いPythonで、タスクを高頻度で実行したい。
通常、自分自身を再投稿するスレッドを使用します。たとえば、次のようになります。
from threading import Thread
class PeriodicThread(Thread):
def run(self):
while 1:
self.f(*self.args, **self.kwargs)
sleep(self.period)
ただし、これは の実行時間が にself.f
比べて無視できる場合にのみ適していself.period
ます。
これを行う方法についての私の最初の考えは、このループの開始時間を記録し、スリープ時間を適切に調整するか、別のスレッドによってインクリメントされるカウントセマフォに基づいてスレッドを作成することです。
これらはどちらも不必要に複雑に見えます。これを達成するためのより良い方法はありますか?