【问题标题】:How to paralellize a divide and conquer algorithm in Clojure如何在 Clojure 中并行化分而治之的算法
【发布时间】:2012-08-26 11:29:13
【问题描述】:

首先说我有一个问题,计算 10 亿位 Pi,计算一个大数的阶乘,或者对一个大列表执行合并排序。我想将问题分成更小的任务并同时执行每个任务并组合结果。首先,这种并发类型的名称是什么?您将如何在 Clojure 中实现它?

【问题讨论】:

标签: concurrency clojure divide-and-conquer


【解决方案1】:

在当前的 Clojure 1.4 中,您可以使用 pmap、pcalls 或 pvalues 来完成此操作。 pmap 函数是 map 的并行版本,而 pcalls 和 pvalues 并没有真正类似的非并行版本(尽管我认为 list 是 @ 的“非并行版本” 987654334@).

但是,对于您描述的问题,听起来您希望使用reduce 的并行版本。 Clojure 1.2 中有一个旧的 ( see here),我从未使用过,所以我无法谈论它的实用性。

Clojure 1.5 中将包含这个新的“reducers”库,Rich Hickey 在博客中提到了here。在这里,fold 似乎是reduce 的并行版本。

【讨论】:

    猜你喜欢
    • 2013-02-02
    • 1970-01-01
    • 2017-06-08
    • 2012-01-01
    • 1970-01-01
    • 2013-02-03
    • 1970-01-01
    • 2013-01-12
    • 2019-06-03
    相关资源
    最近更新 更多