python线程同步
我有一个python应用程序,如下所示:python线程同步,python,multithreading,pyqt,qthread,Python,Multithreading,Pyqt,Qthread,我有一个python应用程序,如下所示: 主线程是GUI 有一个配置线程甚至在GUI之前就启动了 配置线程启动其他几个独立线程 =>如何让GUI知道所有这些“独立线程”(3.)都已完成?我如何在我的程序中检测到它(请给我一个大概的想法) 我知道信号量,但我搞不懂,因为这在逻辑上比我处理线程时习惯的要复杂一些 PS所有这些线程都是PyQt中的QThread,如果这很重要的话,但我对此表示怀疑 谢谢这是一款非常好的线程间通信工具,无需担心锁或其他互斥锁。它具有一对方法,task_done()和joi
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
确保所有其他线程都已启动,然后对其他线程中的t执行
:t.wait()
将阻止,直到其他线程完成()。如果使用threading
模块,请使用t.join()
。我想他只是想知道这些线程何时完成<代码>对于线程中的t:t.join()(或者对于QThreads
,.wait()
)就可以了。我最后使用了一个简单的计数器,可以在互斥锁中访问它。一旦计数器等于线程数,我就调用函数。所以工作流程是这样的:1。启动所有线程2。每个小线程在接近finish3时调用我的方法。它在互斥4中向全局计数器添加1。一旦全局变量等于线程数,则执行代码