(swap! foo (fn [old] 3))
(pmap
(fn [_] (swap! foo inc))
(range 10000))
@foo ;It prints 1027, which is smaller than 10000.
那么,为什么foo不是10003?
与懒惰有什么关系?
答案 0 :(得分:3)
来自pmap
的文档:
半懒惰,因为并行计算保持在消耗之前,但不是 除非需要,否则实现整个结果。仅适用于
计算密集型函数,其中f的时间占主导地位 协调开销。
所以是的,它只是实现了一些元素。尝试将pmap
包裹在doall
中,您就会看到预期的结果。