gpt4 book ai didi

scala - 跟踪已完成的 future

转载 作者:行者123 更新时间:2023-12-05 09:22:23 25 4
gpt4 key购买 nike

我正在生成大量(~100.000)个 http 请求任务作为 Scala 中的 Futures。这需要一段时间,所以我希望能够通过增加全局计数器来跟踪这些 future 中有多少已成功完成或失败。但是,我想避免竞争条件。 Scala 中是否有制作原子计数器的选项?或者有更好的方法吗?

代码如下所示:

val futures = for(i <- 0 until nSteps) yield future {
...
val content = blocking { ... http request ... }
process(content)
}
Await.result(Future.sequence(futures),2 hours)

最佳答案

我建议使用标准 Java AtomicInteger .您可以使用 incrementAndGet() 方法对其进行递增,并通过其 get() 方法获取当前值。

import java.util.concurrent.atomic.AtomicInteger
...
val completed = new AtomicInteger()
val futures = for(i <- 0 until nSteps) yield future {
...
val content = blocking { ... http request ... }
process(content)
completed.incrementAndGet()
}
Await.result(Future.sequence(futures),2 hours)
...
print("Completed: %d" format completed.get)

关于scala - 跟踪已完成的 future ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27103095/

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