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

问题描述 投票:5回答:1

我想使用Java方法:Runtime.getRuntime().availableProcessors(),并将结果保存在整数变量中。

所以在Clojure中,我这样做了:

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

和此:

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

但没有用。

有什么建议吗?

java performance clojure interop
1个回答
17
投票

如果将版本中的方法调用替换为整数,则这在逻辑上是这样的:

(def n-cpu (4))

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.