Как узнать количество ЦПУ с помощью Python
Я хочу узнать количество ЦПУ на локальной машине, используя Python. Результат должен быть в формате user/real
, как выводится командой time(1)
при вызове оптимально масштабируемой программы, работающей только в пользовательском пространстве.
5 ответ(ов)
Если у вас установлен Python версии >= 2.6, вы можете просто использовать следующий код:
import multiprocessing
multiprocessing.cpu_count()
Это позволит вам узнать количество доступных ядер процессора. Для более подробной информации, вы можете обратиться к документации по multiprocessing.
Вот перевод на русский в стиле ответа на StackOverflow:
Эти функции возвращают количество потоков гипертрейдинга процессора:
multiprocessing.cpu_count()
os.cpu_count()
Эти функции возвращают количество процессоров виртуальной машины:
psutil.cpu_count()
numexpr.detect_number_of_cores()
Это имеет значение только в том случае, если вы работаете с виртуальными машинами.
Если вы используете Python версии 3.4 или выше, для получения количества доступных CPU можно использовать следующий код:
import os
print(os.cpu_count())
Если вам нужен аналог команды Linux nproc
, вы можете воспользоваться следующим вариантом:
import os
print(len(os.sched_getaffinity(0)))
Этот код вернёт количество процессоров, доступных текущему процессу.
multiprocessing.cpu_count()
возвращает количество логических процессоров, поэтому если у вас имеется четырехъядерный процессор с гипертрейдингом, то оно вернет 8
. Если вам нужно получить количество физических процессоров, используйте привязки Python к hwloc:
#!/usr/bin/env python
import hwloc
topology = hwloc.Topology()
topology.load()
print(topology.get_nbobjs_by_type(hwloc.OBJ_CORE))
hwloc разработан с учетом портативности для различных операционных систем и архитектур.
Если вы хотите узнать количество физических ядер (не виртуальных, с учетом гиперпоточности), вот платформа-независимое решение:
psutil.cpu_count(logical=False)
Дополнительную информацию можно найти в документации на GitHub: psutil INSTALL.rst.
Обратите внимание, что значение по умолчанию для параметра logical
равно True
, поэтому если вы хотите включить гиперпоточные ядра, вы можете использовать:
psutil.cpu_count()
Это даст вам то же самое количество, что и os.cpu_count()
и multiprocessing.cpu_count()
, ни одна из которых не имеет аргумента logical
.
Как изменить порядок столбцов в DataFrame?
'pip' не распознан как командa внутреннего или внешнего формата
Почему statistics.mean() работает так медленно?
Преобразование строки даты JSON в datetime в Python
Есть ли разница между поднятием экземпляра класса Exception и самого класса Exception?