from threading import Thread
def announce(data):
subprocess.call('espeak',data)
class worker(Thread):
def __init__(self, data):
Thread.__init__(self)
self.data = data
def run(self):
if receiveddata=='a1':
announce("i am ok in room1")
if receiveddata=='b2':
announce("Urgently attend room 1")
# at the end of run() the process will die.
while 1:
receiveddata = xbee.readline()
thread_handle = worker(receiveddata)
thread_handle.start() #
下面是一个框架框架,您可以使用它来实现Python中的并行处理。它既不完整也不完美,但它会给你一个开始,它会解决你最初的问题。在
这里有很多关于线程和其他东西的“最佳实践”,我会让google来解释和寻找它们,因为总有比我在这里一个简短的答案中所能产生的更好的解决方案。在
好消息:
我很荣幸您是python线程新手。在
但正如下面的注释中所讨论的,如果串行端口上有大量数据(这将create thread->;do work->;die)上的大量数据,这将是一个需要资源的解决方案。在
有更有效的线程解决方案(例如在整个程序中保持线程的活动状态,并在类中调用一个函数来代替它)。但这是开始工作所需的最低限度。在
一旦你对线感到舒服
我将在这里留下这些链接,让您从上面这个非常基本的示例中体验和发展您的线程知识:
处理队列