На этот вопрос и ответ - Python multiprocessing.cpu_count() возвращает '1' на 4-ядерном Nvidia Jetson TK1 - вывод Python multiprocessing.cpu_count()
функция на определенных системах отражает количество активно используемых процессоров, а не количество процессоров, которые фактически могут использоваться вызывающей программой Python.
Общая идиома Python заключается в использовании возвращаемого значения cpu_count()
для инициализации количества процессов в Pool
. Однако в системах, использующих такую стратегию "динамической активации ЦП", эта идиома ломается довольно плохо (по крайней мере, в относительно спокойной системе).
Есть ли простой (и переносимый) способ получить число используемых процессоров (в отличие от используемого в настоящее время числа) из Python?
Примечания:
-
На этот вопрос не ответил принятый ответ Как узнать количество процессоров, использующих python, поскольку, как отмечено в вопросе, связанном с В верхней части этого вопроса, при печати содержимого
/proc/self/status
отображаются все 4 ядра как доступные для программы. -
На мой взгляд, "переносимый" исключает любой подход, который включает в себя анализ содержимого
/proc/self/status
, формат которого может отличаться от выпуска к выпуску Linux, и который даже не существует на OS X. ( то же относится и к любому другому псевдо файлу.)