python - 让主线程等待所有线程完成

标签 python multithreading python-2.7

所以我有一个线程列表,所有线程都已启动(使用 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/

相关文章:

python - 部署python qt项目

python - Zappa 无服务器 aws lambda 问题

python - 在单独的线程中运行的高速公路外部的 sendMessage

multithreading - 当我在Winsock connect函数中强制终止线程时会发生什么?

python - Mechanize 打开 Url python

python - 如何在 argparse 中添加带有子解析器的可选位置参数?

python - 实用数据科学食谱Python代码

java - MySQL - 多线程更新(没有线程更新相同的id)但有死锁

python - 查找列表中连续数字的开头和结尾

java - threadStatus 的值为 "225",这是什么意思?