Python - 只有线程执行后才能继续执行main函数?

时间:2018-04-01 23:06:52

标签: python multithreading

我有一个python函数,可以执行类似这样的操作(非常粗糙的伪代码):

while True:

    set_up_some_variables()

    start_4_threads() 

    continue_computing()

“continue_computing”任务取决于强线程任务的输出。如何确保只在线程全部完成后才执行?

我考虑过使用锁(即在线程开始之前,获取4个锁并在线程完成后释放) - 但这不允许我对线程数量保持灵活性。此外,它似乎不是一个优雅的解决方案。

1 个答案:

答案 0 :(得分:2)

thread.join()在继续之前等待所有线程到达程序中的某个点。

def foo(id, var):
    print(id, var)

# Set up some variables
vars = ['a', 'b', 'c', 'd']

# Start threads
for id in range(4):
    thread.start_new_thread(foo, (id, vars[id]))

# Wait for all threads to run foo before continuing
thread.join()

print("All threads complete!")