Количество процессоров в Clojure?Java-взаимодействие - PullRequest
5 голосов
/ 03 апреля 2012

Я бы хотел использовать метод Java: R untime.getRuntime().availableProcessors() и сохранить результат в целочисленной переменной.

Итак, в Clojure я сделал это:

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

, и это:

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

но ни одна не работает.

Есть предложения?

1 Ответ

16 голосов
/ 03 апреля 2012

Если вы замените вызов метода в вашей версии целым числом, это то, что у вас логически:

(def n-cpu (4))

Clojure не может обработать список (4), поскольку первый элемент в списке без кавычекдолжен быть функцией.В этом случае первый элемент является целым числом, а Clojure не рассматривает целые числа как функции.Если вы удалите ненужные скобки, ваше определение var будет выглядеть так:

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

Обратите внимание, что если вы замените вызов метода целым числом, оно станет (def n-cpu 4)?

...