1
我知道這樣的問題已經被問到了,所以從某種意義上說,這是重複的。不過,我已經看過很多這些問題和衆多網站,但我仍然無法弄清楚如何做這個問題的標題。這是我想要完成的,更具體地說:如果發生事件,在Python中喚醒一個線程
一個線程,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好的,謝謝。我會檢查出來,並讓你知道它是如何發生的。 –