首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在python中并行运行多个函数

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

Stack Overflow用户
提问于 2015-11-12 08:15:46
回答 1查看 1K关注 0票数 3

我想要接收串行数据,并根据数据想要宣布。我的监控功能将持续监控串行数据。但我面临的问题是,当我宣布某件事,然后在完成后,串行数据被监测和进程缓慢。我想要连续监测串行数据,并希望发布并行声明。线程是最好的选择吗?怎么处理?

代码语言:javascript
复制
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")
EN

回答 1

Stack Overflow用户

发布于 2015-11-12 08:23:51

代码语言:javascript
复制
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),那么这将是一个需要资源的解决方案。

有更有效的线程解决方案(例如在整个程序中保持线程活动,并在类中调用一个函数来代替)。但这是你开始工作所需的最低限度。

一旦你对线程感到满意

我将把这些链接留在这里,让您从上面这个非常基本的示例中实验和发展您的线程知识:

使用队列的

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33666928

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档