我有一个这样的python应用程序:
- 主线程是GUI
- 甚至在 GUI 之前就启动了一个配置线程
- 配置线程启动其他几个独立线程
=> 我怎样才能让 GUI 知道所有这些“独立线程”(3.)已经完成?我如何在我的程序中检测到它(只是给我一个大致的想法)
我知道信号量,但我想不通,因为这在逻辑上比我在处理线程时习惯的要复杂一些。
PS如果这很重要,所有这些线程都是来自PyQt的QThreads,但我对此表示怀疑。
谢谢
我有一个这样的python应用程序:
=> 我怎样才能让 GUI 知道所有这些“独立线程”(3.)已经完成?我如何在我的程序中检测到它(只是给我一个大致的想法)
我知道信号量,但我想不通,因为这在逻辑上比我在处理线程时习惯的要复杂一些。
PS如果这很重要,所有这些线程都是来自PyQt的QThreads,但我对此表示怀疑。
谢谢
Queue 模块非常适合在线程之间进行通信,而无需担心锁或其他互斥锁。它具有一对方法,task_done() 和 join(),用于发出任务完成的信号并等待所有任务完成。这是文档中的一个示例:
def worker():
while True:
item = q.get()
do_work(item)
q.task_done()
q = Queue()
for i in range(num_worker_threads):
t = Thread(target=worker)
t.daemon = True
t.start()
for item in source():
q.put(item)
q.join() # block until all tasks are done