gpt4 book ai didi

scala - 并行执行 `List` 的 `IO`

转载 作者:行者123 更新时间:2023-12-04 12:16:25 25 4
gpt4 key购买 nike

这是我们要执行 3 IO 的示例在平行下

def test: Unit = {
val ioA = IO.shift *> IO(println("Running ioA"))
// ioA: cats.effect.IO[Unit] = <function1>

val ioB = IO.shift *> IO(println("Running ioB"))
// ioB: cats.effect.IO[Unit] = <function1>

val ioC = IO.shift *> IO(println("Running ioC"))
// ioC: cats.effect.IO[Unit] = <function1>

val program: IO[Unit] = (ioA, ioB, ioC).parMapN { (_, _, _) => () }
// program: cats.effect.IO[Unit] = <function1>

program.unsafeRunSync()
}

第一个问题:如果用 IO.shift点怎么办?在这个例子中?

第二个问题:如果我们有一个 List 怎么办?的 IO我们要并行执行?我为这个任务创建了一个函数,但我不知道这个东西是否已经存在于库中
def parallelize(ios: List[IO[Unit]]): IO[Unit] = {
ios.foldLeft(IO.pure(())) { case (currentResult, currentItem) =>
(currentResult, currentItem).parMapN((_, _) => ())
}
}

最佳答案

这适用于“cats-core:1.1.0”和“cats-effect:0.10.1”

import cats.instances.list._
import cats.syntax.parallel._

//ios: List[IO[A]]
ios.parSequence //IO[List[A]]

关于scala - 并行执行 `List` 的 `IO`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49857581/

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