版上各位前辈好
小弟因工作上需求遇到一个问题,还麻烦版上诸位前辈协助解惑
问题详细说明如下
我有一个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
或是版友们知道有什么方法可以处理我的需求,还请协助指教
以上,先谢谢花时间阅读我问题的版友
作者:
mantour (朱子)
2022-03-01 21:40:00把每次产生的var分别append 到queneA, queneB, queneCthread A, B, C分别跑一个loopwhile 1: if queueA.empty(): time.sleep(1) else: var=queueA.get() ......