Clojure中的处理器数量? Java互操作

时间:2012-04-03 18:10:03

标签: java performance clojure interop

我想使用Java方法:R untime.getRuntime().availableProcessors()并将结果保存为整数变量。

所以在Clojure中我做到了这一点:

(def n-cpu  ((.availableProcessors (Runtime/getRuntime)) ))

和此:

(def n-cpu (Integer/parseInt ((.availableProcessors (Runtime/getRuntime)) )))

但没有工作。

有什么建议吗?

1 个答案:

答案 0 :(得分:16)

如果使用整数替换版本中的方法调用,则这是您在逻辑上具有的内容:

(def n-cpu (4))

Clojure无法处理列表(4),因为非引用列表中的第一项必须是函数。在这种情况下,第一项是整数,而Clojure并不将整数视为函数。如果删除不必要的括号,则var定义如下所示:

(def n-cpu (.availableProcessors (Runtime/getRuntime)))

注意如果用整数替换方法调用,它会变成(def n-cpu 4)