我在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
循环中,那么它将等待第一个线程结束,然后产生下一个线程。我不希望它在开始下一个线程之前等待一个线程结束。它应该同时生成所有线程,然后在代码中执行下一行之前等待所有线程结束(就像上面print
中的func()
应该在所有线程结束后执行一样)。
我该怎么做?
答案 0 :(得分:4)
为什么不把它们列入清单?
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()
答案 1 :(得分:1)