使主线程等待直到所有线程完成

sud*_*008 5 python multithreading python-2.7

所以我有一个线程列表,全部启动(使用threading.start()),我必须阻止主线程列表中的所有线程完成.

这可以通过以下方式实现:

[x.join() for x in threads]
Run Code Online (Sandbox Code Playgroud)

但是,对于每个x.join()执行的,所有其他线程也被阻止.我想要的是所有线程彼此并行执行.主程序应该仅在所有线程都被执行时才恢复,并且列表中的任何线程都不应该被阻止.

据我所知,我想要的不是连接方法,或者我错了?

Pat*_*ins 6

不,x.join()只阻止主线程.其他线程继续并行执行.

for thread in threads:
    thread.join()
Run Code Online (Sandbox Code Playgroud)

有些更惯用,因为你实际上并没有建立一个列表.

您还应该知道多线程在Python中不能正常工作,并且除非您正在进行IO限制(即多次访问远程服务),否则您不太可能从中获得任何性能提升.