gpt4 book ai didi

python - concurrent.futures.as_completed 是如何工作的?

转载 作者:太空狗 更新时间:2023-10-29 20:53:07 39 4
gpt4 key购买 nike

我正在学习 python 并发性,并且向我介绍了 future 的概念。我读到 as_completed() 获取可迭代的 futures 并在完成时产生它们。

我想知道它在内部是如何工作的。它是否立即产生已完成的任务( future )?一种天真的方法是迭代所有 future 并使用 done() 检查每个 future ,但这是低效的。

那么这个函数背后的魔力是什么?

谢谢!

最佳答案

I want to know how it works internally.

as_completed 设置一个回调以在 future 完成时触发,对它收到的所有 futures 这样做。 (为此目的,它使用相当于 add_done_callback 的内部 API。)当任何 future 完成时,as_completed 会收到正在运行的回调通知。回调在完成 future 的任何线程中运行,因此它只设置一个 event。 ,它由所有回调共享,并且 as_completed 休眠。一旦被事件唤醒,as_completed 立即产生完成的 future 。这就是 as_completed 确保 future 在完成时产生的方式,无论发生的顺序如何。屈服后,事件被清除并重复等待,直到所有 future 都完成。

Is it yielding completed tasks (futures) immediately?

是的,这来自documented interfaceimplementation .

关于python - concurrent.futures.as_completed 是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51239251/

39 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com