Как вы определяете количество ядер процессора в кристалле?

В Go вы можете сделать runtime.NumCPU(), а в Node.js вы можете сделать os.cpus(). Есть ли что-то похожее в Crystal?

1
Sam Eaton 31 Мар 2017 в 21:27

2 ответа

Лучший ответ

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

THREADS = `getconf _NPROCESSORS_ONLN || nproc --all || grep -c '^processor' /proc/cpuinfo`.to_i
2
Oleh Prypin 31 Мар 2017 в 18:47

Используйте System.cpu_count. Это даст вам количество доступных логических ядер. Этот метод был введен в Crystal 0.23.0.

Вот источник для этого в дереве для Crystal 0.29.0: https://github.com/crystal-lang/crystal/blob/fbfe8b62f44eca4596090b7580801bd184f73c7a/src/system.cr#L22

0
taylorthurlow 25 Июн 2019 в 01:39