seque和pmap之间的交互

时间:2009-11-05 18:51:02

标签: clojure

如果我将一个函数映射到一个序列上,那么序列将在多大程度上并行实现 如果我从一个并行产生的序列中读取一个线程?

如果我将它包装在一个seque中,这会有所不同:

(seque 30 (pmap do-stuff (range 30000)))

VS

(pmap do-stuff (range 30000))

1 个答案:

答案 0 :(得分:1)

pmap不保证它将在它的输入序列上读取多远 - 可能不会比计算它需要的距离太远。

(seque 30 ...)将实现并缓存来自pmap的输出序列的多达30个元素。那在逻辑上必须至少是输入序列的前30个。如果不考虑pmap的实现,我不能说多远,你可能不应该依赖它。

我很好奇为什么你需要知道这一点。函数执行时的细节,特别是在pmap中,是您通常想要抽象掉的东西。如果是好奇,那很好。但是,如果你依赖于do-stuff函数的一些副作用,你就是在做错了(tm)。