Это просто грубый набросок, основанный на беглом взгляде на документацию XBeeDevice
, но, грубо говоря, вы просто выполните серию блокировочных чтений, пока определенное условие не станет истинным, а затем выйдете.
def process_data(event):
device = XBeeDevice(PORT, BAUD_RATE)
device.open()
while(event.is_set()):
try:
# 10 seconds is just a suggestion, as is what to do
# if no data arrives in 10 seconds.
data = device.read_data(10)
print(..)
except TimeoutException:
pass # Just try again
device.close()
Чтобы запустить поток, создайте новый объект Thread
и новый объект Event
.
import threading
e = threading.Event()
e.set()
t = threading.Thread(target=process_data, args=(e,))
t.start()
# do some other stuff; eventually it's time to kill the loop in
# the thread.
e.clear() # after this, e.is_set() will return False, and the loop
# in your thread will exit.