gpt4 book ai didi

scala - 创建并行执行列表组合器

转载 作者:行者123 更新时间:2023-12-02 18:35:41 26 4
gpt4 key购买 nike

我有一个函数可以将 List[B] 分成两半并返回元组。我需要释放组合器来并行执行它们。

如果我做类似 fl.map(x => x.map(...)) 的事情,它就不是并行的。

object Parallel {

implicit class ParList[A](fl: Future[List[A]]) {

private def split[B](l: List[B]): (List[B], List[B]) = l.splitAt(l.length / 2)

def paralFilter(f: A => Boolean): Future[List[A]] = ???

def paralFold(init: A)(f: (A, A) => A): Future[A] = ???
}

我知道我必须通过 split[B] 按元素拆分列表并并行执行带有元素的组合器。我该怎么做?

最佳答案

要实现此目的,请使用 scala.collection.Parallelizedpar 方法:

object Parallel {

implicit class ParList[A](fl: Future[List[A]]) {

private def split[B](l: List[B]): (List[B], List[B]) = l.splitAt(l.length / 2)

def paralFilter(f: A => Boolean)(implicit ec:ExecutionContext): Future[List[A]] =
fl.map(_.par.filter(f).toList)

def paralFold(init: A)(f: (A, A) => A)(implicit ec:ExecutionContext): Future[A] =
fl.map(_.par.fold(init)(f))
}
}

关于scala - 创建并行执行列表组合器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55982854/

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