このような質問は既に聞かれていますので、ある意味ではこれは複製です。しかし、私はそれらの質問の多く、そして多くのウェブサイトを見てきましたが、私はまだこの質問のタイトルが何をするのかを理解することができません。イベントが発生した場合は、Pythonでスレッドを起動してください
1つのスレッドt_sensors
はセンサーから値を読み取り、その後にrefresh_rate
秒の間スリープ状態になります。これは数時間である可能性があります。そのため、この時間中にセンサからの値の読み込みを再度要求する可能性があります。この要求は、t_checker
のスレッドから取得され、Firebaseデータベース内のデータをチェックし、そのデータに基づいて、t_sensors
を起動するかどうかを選択します。
def start_sensors(self):
# do some stuff...
# refreshes every refresh_rate secs
refresh_rate = firebase_root.get('/settings', 'refreshRate')
condition.wait(refresh_rate)
def check_for_plants(self):
while True:
modded_plants = firebase_root.get('/modifiedPlants', '')
print(modded_plants)
for plant, properties in modded_plants.items():
print properties['status']
if properties['status'] == 'modified':
condition.notify()
print("Notified")
condition = threading.Condition()
t_sensors = threading.Thread(target=start_sensors, args=(condition,))
t_checker = threading.Thread(target=check_for_plants, args=(condition,))
condition.acquire()
t_sensors.start()
t_checker.start()
私は条件を正しく使用していないことを知っていますが、どこで問題を修正する必要があるのかは分かりません。本当に、本当にありがとうございます。
['waiting'](https://pypi.python.org/pypi/waiting)ライブラリをチェックしてください。 – erip
t_checkがチェックしたい場合にタイマーをリセットしたくない、あるいはそのサイクルを続けるのは好きですか? – Simon
@eripありがとう、ありがとう。私はそれをチェックし、それがどのようになっているかを知らせます。 –