現在、Python (2.7) を使用して、いくつかのスレッドが進行中の GUI を作成しています。情報を取得する前に約 1 秒の遅延を行う必要があるという点に遭遇しましたが、関数の実行に数ミリ秒以上かかる余裕はありません。timer.doneFlag
それを念頭に置いて、フラグを設定し、それが完了したかどうかを確認するために突っ込み続ける主な機能を持つスレッドタイマーを作成しようとしています。
それは働いています。しかし、いつもではありません。time.sleep
私が直面している問題は、 の関数がrun
1 秒も完全に待機していないように感じることがあるということです(場合によっては、待機さえしないこともあります)。必要なのは、開始時間を制御し、1 秒に達したときにフラグを上げるフラグを設定できることだけです。
スレッド化可能な遅延を取得するためだけにやりすぎている可能性があります。何か提案したり、次のコードのバグを見つけるのを手伝ってくれたりすると、とても感謝しています!
私が使用したコードの一部を添付しました:
メインプログラムから:
class dataCollection:
def __init__(self):
self.timer=Timer(5)
self.isTimerStarted=0
return
def StateFunction(self): #Try to finish the function within a few milliseconds
if self.isTimerStarted==0:
self.timer=Timer(1.0)
self.timer.start()
self.isTimerStarted=1
if self.timer.doneFlag:
self.timer.doneFlag=0
self.isTimerStarted=0
#and all the other code
import time
import threading
class Timer(threading.Thread):
def __init__(self, seconds):
self.runTime = seconds
self.doneFlag=0
threading.Thread.__init__(self)
def run(self):
time.sleep(self.runTime)
self.doneFlag=1
print "Buzzzz"
x=dataCollection()
while 1:
x.StateFunction()
time.sleep(0.1)