簡體   English   中英

如何在python中並行運行多個函數

[英]how to run multiple functions parallel in python

我想收到串行數據,並根據想要發布公告的數據。 我的監控功能將持續監控串行數據。 但我面臨的一個問題是,當我宣布某些內容之后,在完成公告后,將監控串行數據並且流程進展緩慢。 我想連續監視串行數據,並希望將聲明並行。 線程是最好的選擇嗎? 怎么辦呢?

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 ),這將是一個資源要求很高的解決方案。

有更有效的線程解決方案(例如在整個程序中保持線程活動並在類中調用一個函數來代替)。 但這是您開始使用所需的最低限度。

一旦你對線程感到滿意

我將在這里留下這些鏈接,以便您從上面這個非常基本的示例中試驗和發展您的線程知識:

使用隊列

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM