[問題] 如何同時處理數個function且數次

看板Python作者 (14號星期五的傑森)時間2年前 (2022/02/28 17:12), 編輯推噓1(109)
留言10則, 5人參與, 2年前最新討論串1/1
版上各位前輩好 小弟因工作上需求遇到一個問題,還麻煩版上諸位前輩協助解惑 問題詳細說明如下 我有一個def main() 這個main主要是每隔n秒,就產生一組變數(var) 接著這組變數會傳入def A, B, C, ...(function有數個) 因為A, B, C,...一個一個處理,會使得所有function還沒跑完下,下一筆變數就產生 因此上網爬了一下多線程 threading th1 = threading.Thread(target=A, args=(var,)) th1.start() th2 = threading.Thread(target=B, args=(var,)) th2.start() th3 = threading.Thread(target=C, args=(var,)) ... th3.start() 透過像這樣的寫法去處理,但這寫法又會使得Thread一直不斷產生 thread.enumerate() 會看到一堆 所以我想請教是,能否就A B C 各自設為一個Thread 然後當他接受到var時候,就各自自行處理後續動作 基本上需求就像是pyqtSignal那樣 我就發射訊號到事先設定連接的function並處理 但因為我這並非UI介面,所以就暫時不考慮pyqtSignal 也有google到python內建的signal 可是看起來並非我所要的需求(或是沒看仔細而忽視,若有忽視還請指教) 上網google了multiprocess、async方法 以我對這兩方法的認知,似乎派不上用場 (若認知錯也請指教) 因為A, B, C.. 並非複雜計算,卻需要同時處理 所以暫不考慮上述兩方法,而目前只先想到thread 或是版友們知道有甚麼方法可以處理我的需求,還請協助指教 以上,先謝謝花時間閱讀我問題的版友 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.129.205.64 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1646039568.A.B75.html

02/28 17:24, 2年前 , 1F
將N個function跟main拆開寫成worker 用subprocess去
02/28 17:24, 1F

02/28 17:25, 2年前 , 2F
用subprocess.Popen 跑python3 worker.py sys.argv
02/28 17:25, 2F

02/28 19:26, 2年前 , 3F
謝謝你回答,我研究一下subprocess
02/28 19:26, 3F

02/28 20:24, 2年前 , 4F
參數改傳 queue
02/28 20:24, 4F

02/28 23:24, 2年前 , 5F
試試看用 rabbitmq、celery 的方式
02/28 23:24, 5F

02/28 23:25, 2年前 , 6F
ABC 是三個 worker,main 是 Producer
02/28 23:25, 6F

03/01 21:40, 2年前 , 7F
把每次產生的var分別append 到queneA, queneB, queneC
03/01 21:40, 7F

03/01 21:41, 2年前 , 8F
thread A, B, C分別跑一個loop
03/01 21:41, 8F

03/01 21:46, 2年前 , 9F
while 1: if queueA.empty(): time.sleep(1) else: var=
03/01 21:46, 9F

03/01 21:46, 2年前 , 10F
queueA.get() ......
03/01 21:46, 10F
文章代碼(AID): #1Y798Gjr (Python)