首先说我有一个问题,计算 10 亿位 Pi,计算一个大数的阶乘,或者对一个大列表执行合并排序。我想将问题分成更小的任务,并同时执行每个任务并组合结果。首先,这种类型的并发的名称是什么,您将如何在 Clojure 中实现它?
问问题
498 次
1 回答
4
在当前的 Clojure 1.4 中,您可以使用 Maybe 、 或 来完成pmap
此pcalls
操作pvalues
。该pmap
函数是 的并行版本map
,而实际上pcalls
并pvalues
没有类似的非并行版本(尽管我认为list
是 的“非并行版本” pvalues
)。
但是,对于您描述的问题,听起来您希望使用并行版本的reduce
. Clojure 1.2 中有一个旧的(见这里),我从未使用过,所以我无法谈论它的实用性。
与 Clojure 1.5 一起出现的将是这个新的“reducers”库,Rich Hickey 在这里发表了博客。在这里,fold
似乎是reduce
.
于 2012-08-31T16:25:00.280 回答