8

Как узнать количество ЦПУ с помощью Python

28

Я хочу узнать количество ЦПУ на локальной машине, используя Python. Результат должен быть в формате user/real, как выводится командой time(1) при вызове оптимально масштабируемой программы, работающей только в пользовательском пространстве.

5 ответ(ов)

12

Если у вас установлен Python версии >= 2.6, вы можете просто использовать следующий код:

import multiprocessing

multiprocessing.cpu_count()

Это позволит вам узнать количество доступных ядер процессора. Для более подробной информации, вы можете обратиться к документации по multiprocessing.

0

Вот перевод на русский в стиле ответа на StackOverflow:

Эти функции возвращают количество потоков гипертрейдинга процессора:

  1. multiprocessing.cpu_count()
  2. os.cpu_count()

Эти функции возвращают количество процессоров виртуальной машины:

  1. psutil.cpu_count()
  2. numexpr.detect_number_of_cores()

Это имеет значение только в том случае, если вы работаете с виртуальными машинами.

0

Если вы используете Python версии 3.4 или выше, для получения количества доступных CPU можно использовать следующий код:

import os
print(os.cpu_count())

Если вам нужен аналог команды Linux nproc, вы можете воспользоваться следующим вариантом:

import os
print(len(os.sched_getaffinity(0)))

Этот код вернёт количество процессоров, доступных текущему процессу.

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 разработан с учетом портативности для различных операционных систем и архитектур.

0

Если вы хотите узнать количество физических ядер (не виртуальных, с учетом гиперпоточности), вот платформа-независимое решение:

psutil.cpu_count(logical=False)

Дополнительную информацию можно найти в документации на GitHub: psutil INSTALL.rst.

Обратите внимание, что значение по умолчанию для параметра logical равно True, поэтому если вы хотите включить гиперпоточные ядра, вы можете использовать:

psutil.cpu_count()

Это даст вам то же самое количество, что и os.cpu_count() и multiprocessing.cpu_count(), ни одна из которых не имеет аргумента logical.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь