要求是启动五个线程,只在最快的线程中等待。 5 个线程都去 5 个方向寻找相同的数据,一个就足够继续控制流了。
实际上,我需要等待前两个线程返回,以相互验证。但我想如果我知道如何等待最快。我可以弄清楚如何等待第二快的。
很多人都在谈论 join(timeout)
,但是你事先不知道要等哪一个(提前申请 join
)。
原文由 Stackoverflow 发布,翻译遵循 CC BY-SA 4.0 许可协议
要求是启动五个线程,只在最快的线程中等待。 5 个线程都去 5 个方向寻找相同的数据,一个就足够继续控制流了。
实际上,我需要等待前两个线程返回,以相互验证。但我想如果我知道如何等待最快。我可以弄清楚如何等待第二快的。
很多人都在谈论 join(timeout)
,但是你事先不知道要等哪一个(提前申请 join
)。
原文由 Stackoverflow 发布,翻译遵循 CC BY-SA 4.0 许可协议
2 回答5.2k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
4 回答1.4k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
3 回答1.2k 阅读✓ 已解决
2 回答857 阅读✓ 已解决
1 回答1.7k 阅读✓ 已解决
使用队列:每个线程完成后将结果放入队列,然后您只需要读取适当数量的结果并忽略其余部分:
Queue.get()
的文档(没有参数它等同于Queue.get(True, None)
: