gpt4 book ai didi

python - 如何在python中并行运行多个函数

转载 作者:行者123 更新时间:2023-11-28 18:34:37 25 4
gpt4 key购买 nike

我想接收串口数据,并根据数据发布公告。我的监控功能将持续监控串行数据。但是我面临一个问题,当我宣布某事时,在宣布完成后串行数据被监控并且过程变慢。我想连续监视串行数据,并想并行发布公告。线程是最好的选择吗?如何处理?

def announce(data):
subprocess.call('espeak',data)

while 1:

receiveddata= xbee.readline()
if receiveddata=='a1':
announce("i am ok in room1")
if receiveddata=='b2':
announce("Urgently attend room 1")

最佳答案

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() # <- This starts the thread but keeps on going

这是一个骨架框架,您可以使用它在 Python 中实现并行处理。它不完整也不完美,但它会给你一个开始,它会解决你最初的问题。

线程和东西有很多“最佳实践”,我将离开谷歌来解释和寻找这些,因为总有比我在这里的一个简短答案所能产生的更好的解决方案。

很高兴知道:

我很荣幸您是 python 线程的新手。

但是正如下面评论中所讨论的,如果串口上有大量数据(这将create thread -> do work -> die).

有更有效的线程解决方案(例如在整个程序中保持线程处于事件状态,并在类中调用一个函数来代替)。但这是您入门所需的最低限度。

熟悉线程后

我将在此处留下这些链接,供您通过上面这个非常基本的示例进行实验和发展您的线程知识:

使用队列

关于python - 如何在python中并行运行多个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33666928/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com