所以我有一个线程列表,所有线程都已启动(使用 threading.start()
),并且我必须阻塞主线程以完成列表中的所有线程。
这可以通过以下方式实现:
[x.join() for x in threads]
但是,对于每个 x.join()
执行,所有其他线程也会被阻塞。我想要的是所有线程彼此并行执行。主程序只有在所有线程都执行完后才能恢复,并且列表中的线程在任何时候都不应被阻塞。
据我所知,join 方法并没有实现我想要的效果,还是我错了?
最佳答案
不,x.join()
只会阻塞主线程。其他线程继续并行执行。
for thread in threads:
thread.join()
更符合习惯,因为您实际上并不是在构建列表。
您还应该知道 multithreading doesn't work as expected in Python ,除非您从事的是 IO 绑定(bind)的工作(即多次访问远程服务),否则您不太可能从中获得任何性能提升。
关于python - 让主线程等待所有线程完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25258122/