11K*_*tes 9 concurrency clojure divide-and-conquer
首先说我有一个问题,计算10亿个Pi的数字,计算一个大数的阶乘,或者在一个大的列表上执行mergesort.我想将问题分成较小的任务,并同时执行每个任务并合并结果.首先,这种类型的并发性的名称是什么?如何在Clojure中执行此操作?
Omr*_*ein 4
在当前的 Clojure 1.4 中,您可以使用pmap、pcalls或来完成此操作pvalues。该pmap函数是 的并行版本map,而pcalls和pvalues并没有真正具有类似的非并行版本(尽管,我认为list是 的“非并行版本” pvalues)。
pmap
pcalls
pvalues
map
list
但是,对于您描述的问题,听起来您想要使用并行版本的reduce. Clojure 1.2 中有一个旧版本(请参阅此处),我从未使用过它,因此我无法谈论它的实用性。
reduce
Clojure 1.5 中将包含这个新的“reducers”库,Rich Hickey在此博客中介绍了该库。这里,fold似乎是一个并行版本reduce。
fold
归档时间:
13 年,8 月 前
查看次数:
467 次
最近记录: