以下のコードで定義されているクラス PROCESS (ここには示されていない他の関数によって呼び出されるたびに実行されます) から x 分ごとにデータをサンプリングして、これをスケジュールしようとしています。X 分ごとにスケジューラ関数を実行しています。 MAIN 関数によって開始され、関数 minmax_job によって実行されます。
ただし、私の関数 minmax_job は、グローバル変数の配置などについて試行錯誤した i の初期値を認識していないようですが、i = 0 (初期) であることをまだ認識していません。
i = 0
atc,otc,tssc = 0,0,0
atf,otf,tssf = False,False,False
class Process(threading.Thread):
def __init__(self, buffer3, broadcast_server):
threading.Thread.__init__(self)
self.setDaemon(True)
self.buffer3 = buffer3
self.factory = broadcast_server
def run(self):
today = datetime.now()
global time_of_last_run
global atv1,atv2,atv3,otv1,otv2,otv3,tssv1,tssv2,tssv3
global atf,otf,tssf
global atc,otc,tssc
if self.buffer3.startswith('kitchen aquarium: temp:'):
self.temp = self.buffer3.replace('kitchen aquarium: temp:','')
self.factory.broadcast("Aquarium temperature %s" % self.temp)
if atc == 1 and atf:
atv1 = float(self.temp)
atf = False
elif atc == 2 and atf:
atv2 = float(self.temp)
atf = False
elif atc == 3 and atf:
atv3 = float(self.temp)
atf = False
def minmax_job():
global atv1,atv2,atv3,otv1,otv2,otv3,tssv1,tssv2,tssv3
global atf,otf,tssf
global atc,otc,tssc,i
if i == 3:
i = 0
atc = 0
if i < 4:
atc = atc + 1
atf = True
i = i + 1
if __name__ == '__main__':
minmax_scheduler = Scheduler()
minmax_scheduler.add_interval_job(minmax_job, seconds=10)
minmax_scheduler.start()