Skip to main content
 首页 » 编程设计

python之如何等待python中动态启动的多个线程完成

2025年05月04日31telwanggs

我在 python 中使用 threading 来动态生成多个线程。这就是我生成线程的方式:

def func(max_val): 
 
    for val in range(0,max_val): 
        thread1 = threading.Thread(target=func9, args=(val,)) 
        thread1.start() 
 
    print 'Ended all threads' #this should get printed once all the threads have ended 
    # bunch of other code after this 
    . 
    . 
    . 
 
 
if __name__ == '__main__': 
    ret = func() 

我想要的是,一旦所有线程都被生成,那么进程应该等到所有线程都结束,然后继续执行代码中的下一行。我知道我们使用 thread1.join() 来等待一个线程,但是如果我将它放在 for 循环中,那么它将等待第一个线程结束,然后再生成下一个线程。我不希望它在开始下一个线程之前等待一个线程结束。它应该同时生成所有线程,然后等待所有线程结束,然后再执行下一行代码(比如上面 func() 中的 print 应该执行一次)线程已结束)。

我该怎么做?

请您参考如下方法:

为什么不把它们放在一个列表中?

threads = [] 
 
for val in range(0,max_val): 
    thread1 = threading.Thread(target=func9, args=(val,)) 
    thread1.start() 
    threads.append(thread1) 
 
for thread in threads: 
    thread.join()