作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我只是使用 pmap 对 clojure 进行一些性能测试,我希望能够控制与 pmap 一起使用的线程数。我知道在使用 OpenMP 之类的东西时,可以使用 omp_set_num_threads() 设置线程数。我想知道 clojure 中是否会有类似的东西。
最佳答案
这是 pmap
的代码:
(defn pmap
"Like map, except f is applied in parallel. Semi-lazy in that the
parallel computation stays ahead of the consumption, but doesn't
realize the entire result unless required. Only useful for
computationally intensive functions where the time of f dominates
the coordination overhead."
([f coll]
(let [n (+ 2 (.. Runtime getRuntime availableProcessors))
rets (map #(future (f %)) coll)
step (fn step [[x & xs :as vs] fs]
(lazy-seq
(if-let [s (seq fs)]
(cons (deref x) (step xs (rest s)))
(map deref vs))))]
(step rets (drop n rets))))
pmap
需要
所有可用的处理器 并循环使用它们。所以,不,没有办法设置线程数......但你总是可以编写自己的
pmap
,它将提供此类功能。
关于clojure - 有没有办法控制与 pmap 一起使用的线程数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4456680/
我是一名优秀的程序员,十分优秀!