首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >并行执行‘in’列表

并行执行‘in’列表
EN

Stack Overflow用户
提问于 2018-04-16 12:38:22
回答 1查看 3.7K关注 0票数 11

当我们想并行执行3 IO时,这是一个例子。

代码语言:javascript
复制
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 of IO,我们想并行执行怎么办?我已经为这个任务创建了一个函数,但是我不知道这个东西是否已经存在于库中

代码语言:javascript
复制
def parallelize(ios: List[IO[Unit]]): IO[Unit] = {
    ios.foldLeft(IO.pure(())) { case (currentResult, currentItem) =>
      (currentResult, currentItem).parMapN((_, _) => ())
    }
  }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-20 08:49:39

这适用于“猫-核心:1.1.0”和“猫-效果:0.10.1”。

代码语言:javascript
复制
import cats.instances.list._
import cats.syntax.parallel._

//ios: List[IO[A]]
ios.parSequence //IO[List[A]]
票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49857581

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档