Как узнать сколько у меня ядер: Определение количества ядер в процессоре

Как узнать количество ядер процессора в Windows

Привет, друзья. В этой публикации рассмотрим такой вопрос: как узнать количество ядер процессора. Как узнать, сколько ядер, и сколько потоков у процессора, если он поддерживает гиперпоточность. В среде Windows делается это очень просто её же системными средствами. Также для получения такой информации можно использовать специальные программы для диагностики компьютерных комплектующих. Давайте рассмотрим все средства решения поставленной задачи.

Итак, ядра и потоки процессоров, это два неразрывно связанных понятия. Ядра – аппаратные, т.е. физические, они обеспечивают выполнение задач, возложенных на процессор по обработке информации. Некоторые процессоры Intel поддерживают технологию гиперпоточности Hyper-Threading, это значит, что у таких процессоров физические ядра имеют по два логических потока, которые помогают ядрам более эффективно (на 30%) справляться со своими задачами. Узнаем же, сколько ядер и потоков при наличии последних имеется у нашего процессора.

В Windows 10 и 8.1 можем использовать системный диспетчер задач, вызывается клавишами Shift+Ctrl+Esc, либо опциями в контекстном меню на панели задач или меню по клавишам Win+X. Во вкладке «Производительность» переключаемся на раздел «ЦП» и смотрим графы:

  • «Ядра», где будет указано число ядер процессора;
  • «Логических процессоров», где будет указано число потоков.

Если процессор не поддерживает Hyper-Threading, потоков будет указано столько же, сколько и ядер.

Друзья, в принципе максимум информации о своём процессоре – ядра, потоки, частоты, поддерживаемые технологии и т.п. – можно узнать на его страничке спецификаций на сайте производителя, т.е. на сайте компаний Intel и AMD. Вам для этого нужно загуглить запрос нечто «модель процессора + сайт». А модель своего процессора в среде Windows узнать можно узнать элементарно – с помощью системного диспетчера устройств. Запустить его можно в Windows 10 и 8.1 в меню по клавишам Win+X, во всех системах Windows – с помощью ввода в системный поиск непосредственно названия диспетчера или технического названия его приложения:

devmgmt.msc

В диспетчере устройств, в разделе «Процессоры» и увидим название модели нашего процессора. Кстати, процессоров здесь будет числиться столько, сколько у него ядер или потоков.

Узнать количество ядер процессора можно с помощью бесплатной программы-диагноста CPU-Z. Она отображает характеристики базовых комплектующих компьютера, с её помощью можно много чего узнать о начинке своего ПК или ноутбука. В первой вкладке «CPU» этой программы будет содержаться информация о процессоре. И в самом низу увидим:

  • В графе «Cores» число ядер процессора;
  • В графе «Threads» число потоков для процессоров, у которых есть поддержка Hyper-Threading.

Опять же, если процессор без технологии гиперпоточности, потоков для него будет указано столько, сколько ядер.

Ну и ещё одна программа, показывающая сколько ядер у процессора, не могу, друзья, не упомянуть лишний раз о ней – HWiNFO. Совершенно бесплатная, при этом по уровню детализации информации о комплектующих компьютера сравнима с известной AIDA64, пригодится во многих случаях. В программе HWiNFO идём в раздел «Central Processor(s)», и там будут графы:

  • «Number of CPU Cores», показывающая число ядер;
  • «Number of Logical CPUs», показывающая число потоков для процессоров с технологией гиперпоточности.

И здесь также, если процессор без гиперпоточности, его число потоков будет таким же, как и число ядер.

9 команд для проверки информации о CPU в Linux / Хабр

Информация об аппаратном обеспечении CPU

Информация о CPU (Central Processing Unit. Центральный процессор) включает в себя подробные сведения о процессоре, такие как архитектура, название производителя, модель, количество ядер, скорость каждого ядра и т. д.

В linux существует довольно много команд для получения подробной информации о CPU.

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

1. /proc/cpuinfo

Файл /proc/cpuinfo содержит подробную информацию об отдельных ядрах CPU.

Выведите его содержимое с помощью less или cat.

$ less /proc/cpuinfo
processor       : 0
vendor_id       : GenuineIntel
cpu family      : 6
model           : 23
model name      : Intel(R) Core(TM)2 Quad CPU    Q8400  @ 2.66GHz
stepping        : 10
microcode       : 0xa07
cpu MHz         : 1998.000
cache size      : 2048 KB
physical id     : 0
siblings        : 4
core id         : 0
cpu cores       : 4
apicid          : 0
initial apicid  : 0
fpu             : yes
fpu_exception   : yes
cpuid level     : 13
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx lm constant_tsc arch_perfmon pebs bts rep_good nopl aperfmperf pni dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm sse4_1 xsave lahf_lm dtherm tpr_shadow vnmi flexpriority
bogomips        : 5303. 14
clflush size    : 64
cache_alignment : 64
address sizes   : 36 bits physical, 48 bits virtual
power management:

Каждый процессор или ядро перечислены отдельно, а различные подробности о скорости, размере кэша и названии модели включены в описание.

Чтобы подсчитать количество процессоров, используйте grep с wc

$ cat /proc/cpuinfo | grep processor | wc -l
4

Количество процессоров, показанное в /proc/cpuinfo, может не соответствовать реальному количеству ядер процессора. Например, процессор с 2 ядрами и гиперпоточностью будет показан как процессор с 4 ядрами.

Чтобы получить фактическое количество ядер, проверьте идентификатор ядра на наличие уникальных значений

$ cat /proc/cpuinfo | grep 'core id'
core id         : 0
core id         : 2
core id         : 1
core id         : 3

Соответственно, есть 4 разных идентификатора ядра. Это указывает на то, что существует 4 реальных ядра.

2. lscpu — отображение информации об архитектуре CPU

lscpu — это небольшая и быстрая команда, не требующая никаких опций. Она просто выводит информацию об аппаратном обеспечении CPU в удобном для пользователя формате.

$ lscpu
Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                4
On-line CPU(s) list:   0-3
Thread(s) per core:    1
Core(s) per socket:    4
Socket(s):             1
NUMA node(s):          1
Vendor ID:             GenuineIntel
CPU family:            6
Model:                 23
Stepping:              10
CPU MHz:               1998.000
BogoMIPS:              5303.14
Virtualization:        VT-x
L1d cache:             32K
L1i cache:             32K
L2 cache:              2048K
NUMA node0 CPU(s):     0-3

3. hardinfo

Hardinfo — это gui  инструмент на базе gtk, который генерирует отчеты о различных аппаратных компонентах. Но он также может запускаться из командной строки, в случае если отсутствует возможность отображения gui (Graphical User Interface — графический интерфейс пользователя).

$ hardinfo | less

Он создаст большой отчет о многих аппаратных частях, читая файлы из каталога /proc. Информация о CPU находится в начале отчета. Отчет также может быть записан в текстовый файл.

Hardinfo выполняет несколько эталонных тестов, занимающих несколько минут, прежде чем вывести отчет на экран.

4. lshw

Команда lshw может отобразить ограниченную информацию о CPU. lshw по умолчанию показывает информацию о различных аппаратных частях, а опция ‘-class‘ может быть использована для сбора информации о конкретной аппаратной части.

$ sudo lshw -class processor
  *-cpu
       description: CPU
       product: Intel(R) Core(TM)2 Quad CPU    Q8400  @ 2.66GHz
       vendor: Intel Corp.
       physical id: 0
       bus info: cpu@0
       version: Intel(R) Core(TM)2 Quad CPU    Q8400  @ 2.66GHz
       slot: LGA 775
       size: 1998MHz
       capacity: 4GHz
       width: 64 bits
       clock: 333MHz
       capabilities: fpu fpu_exception wp vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx x86-64 constant_tsc arch_perfmon pebs bts rep_good nopl aperfmperf pni dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm sse4_1 xsave lahf_lm dtherm tpr_shadow vnmi flexpriority cpufreq

Производитель, модель и скорость процессора отображаются правильно. Однако из приведенного выше результата невозможно определить количество ядер в процессоре.

Чтобы узнать больше о команде lshw, ознакомьтесь с этой статьей:

Примеры выполнения команды lshw для получения информации об аппаратном обеспечении в Linux

5. nproc

Команда nproc просто выводит количество доступных вычислительных блоков. Обратите внимание, что количество вычислительных блоков не всегда совпадает с количеством ядер.

$ nproc
4

6. dmidecode

Команда dmidecode отображает некоторую информацию о CPU, которая включает в себя тип сокета, наименование производителя и различные флаги.

$ sudo dmidecode -t 4
# dmidecode 2.12
SMBIOS 2.4 present.
Handle 0x0000, DMI type 4, 35 bytes
Processor Information
        Socket Designation: LGA 775
        Type: Central Processor
        Family: Pentium D
        Manufacturer: Intel(R) Corporation
        ID: 7A 06 01 00 FF FB EB BF
        Signature: Type 0, Family 6, Model 23, Stepping 10
        Flags:
                FPU (Floating-point unit on-chip)
                VME (Virtual mode extension)
                DE (Debugging extension)
                PSE (Page size extension)
                TSC (Time stamp counter)
                MSR (Model specific registers)
                PAE (Physical address extension)
                MCE (Machine check exception)
                CX8 (CMPXCHG8 instruction supported)
                APIC (On-chip APIC hardware supported)
                SEP (Fast system call)
                MTRR (Memory type range registers)
                PGE (Page global enable)
                MCA (Machine check architecture)
                CMOV (Conditional move instruction supported)
                PAT (Page attribute table)
                PSE-36 (36-bit page size extension)
                CLFSH (CLFLUSH instruction supported)
                DS (Debug store)
                ACPI (ACPI supported)
                MMX (MMX technology supported)
                FXSR (FXSAVE and FXSTOR instructions supported)
                SSE (Streaming SIMD extensions)
                SSE2 (Streaming SIMD extensions 2)
                SS (Self-snoop)
                HTT (Multi-threading)
                TM (Thermal monitor supported)
                PBE (Pending break enabled)
        Version: Intel(R) Core(TM)2 Quad CPU    Q8400  @ 2. 66GHz
        Voltage: 1.6 V
        External Clock: 333 MHz
        Max Speed: 4000 MHz
        Current Speed: 2666 MHz
        Status: Populated, Enabled
        Upgrade: Socket LGA775
        L1 Cache Handle: 0x0003
        L2 Cache Handle: 0x0001
        L3 Cache Handle: Not Provided
        Serial Number: Not Specified
        Asset Tag: Not Specified
        Part Number: Not Specified

7. cpuid

Команда cpuid собирает информацию CPUID о процессорах Intel и AMD x86.

Программа может быть установлена с помощью apt на ubuntu

$ sudo apt-get install cpuid

А вот пример вывода

$ cpuid
.....
Vendor ID: "GenuineIntel"; CPUID level 13
Intel-specific functions:
Version 0001067a:
Type 0 - Original OEM
Family 6 - Pentium Pro
Model 7 - Pentium III/Pentium III Xeon - external L2 cache
Stepping 10
Reserved 4
Extended brand string: "Intel(R) Core(TM)2 Quad CPU    Q8400  @ 2.66GHz"
CLFLUSH instruction cache line size: 8
Initial APIC ID: 2
Hyper threading siblings: 4
Feature flags bfebfbff:
FPU    Floating Point Unit
VME    Virtual 8086 Mode Enhancements
DE     Debugging Extensions
PSE    Page Size Extensions
TSC    Time Stamp Counter
MSR    Model Specific Registers
PAE    Physical Address Extension
MCE    Machine Check Exception
CX8    COMPXCHG8B Instruction
APIC   On-chip Advanced Programmable Interrupt Controller present and enabled
SEP    Fast System Call
MTRR   Memory Type Range Registers
PGE    PTE Global Flag
MCA    Machine Check Architecture
CMOV   Conditional Move and Compare Instructions
FGPAT  Page Attribute Table
PSE-36 36-bit Page Size Extension
CLFSH  CFLUSH instruction
DS     Debug store
ACPI   Thermal Monitor and Clock Ctrl
MMX    MMX instruction set
FXSR   Fast FP/MMX Streaming SIMD Extensions save/restore
SSE    Streaming SIMD Extensions instruction set
SSE2   SSE2 extensions
SS     Self Snoop
HT     Hyper Threading
TM     Thermal monitor
31     reserved
. ....

8. inxi

Inxi — это скрипт, который использует другие программы для создания хорошо структурированного легко читаемого отчета о различных аппаратных компонентах системы. Ознакомьтесь с полным руководством по inxi.

$ sudo apt-get install inxi

Вывод соответствующей информации о CPU/процессоре

$ inxi -C
CPU:       Quad core Intel Core2 Quad CPU Q8400 (-MCP-) cache: 2048 KB flags: (lm nx sse sse2 sse3 sse4_1 ssse3 vmx)
           Clock Speeds: 1: 1998.00 MHz 2: 1998.00 MHz 3: 1998.00 MHz 4: 1998.00 MHz

Чтобы узнать больше о команде inxi и ее использовании, ознакомьтесь с этой статьей:

Inxi — удивительный инструмент для проверки информации об аппаратном обеспечении в Linux

9. Hwinfo

Команда hwinfo — это программа для получения информации об оборудовании, которая может быть использована для сбора подробных сведений о различных аппаратных компонентах в системе Linux.

Она также отображает информацию о процессоре. Вот быстрый пример:

$ hwinfo --short --cpu
cpu:
                       Intel(R) Core(TM) i5-7400 CPU @ 3.00GHz, 2275 MHz
                       Intel(R) Core(TM) i5-7400 CPU @ 3.00GHz, 2262 MHz
                       Intel(R) Core(TM) i5-7400 CPU @ 3.00GHz, 2058 MHz
                       Intel(R) Core(TM) i5-7400 CPU @ 3.00GHz, 2133 MHz
$

Если не использовать опцию «—short», команда отобразит гораздо больше информации о каждом ядре CPU, например, архитектуру и характеристики процессора.

Чтобы более подробно изучить команду hwinfo, ознакомьтесь с этой статьей:

Проверка информации об аппаратном обеспечении в Linux с помощью команды hwinfo

Заключение

Это были некоторые команды для проверки информации о CPU в системах на базе Linux, таких как Ubuntu, Fedora, Debian, CentOS и др.

Примеры других команд для проверки информации о CPU смотрите в этой статье:

Как проверить информацию о процессоре и CPU в Linux — примеры команд

Большинство команд обрабатываются с помощью интерфейса командной строки и выводятся в текстовом формате. Для GUI интерфейса используйте программу Hardinfo.

Она показывает подробности об аппаратном обеспечении различных компонентов в простом для использования GUI интерфейсе.

Если вы знаете какую-либо другую полезную команду, которая может отображать информацию о CPU, сообщите нам об этом в комментариях ниже


Материал подготовлен в рамках курса Administrator Linux. Professional.

Если вы хотели бы узнать подробнее о формате обучения и программе, познакомиться с преподавателем курса — приглашаем на день открытых дверей онлайн. Регистрация здесь.

А если вам интересно развитие в этой сфере с нуля до pro, рекомендуем ознакомиться с учебной программой специализации.

Количество ЦП в Python

Вы можете определить количество ЦП в вашей системе, используя функцию multiprocessing.cpu_count() или функцию os.cpu_count() .

В этом руководстве вы узнаете, как подсчитать количество процессоров в Python .

Начнем.

Содержание

Необходимо знать количество процессоров

При параллельном программировании нам часто необходимо знать количество процессоров, доступных программе.

Для этого есть много причин, например:

  • Настройка пула потоков или пула процессов.
  • Настройка количества одновременных задач.
  • Оценка времени выполнения программы.

Как мы можем определить количество ядер ЦП из программы?

Что мы подразумеваем под ЦП

Прежде чем мы рассмотрим, как определить количество ядер ЦП в программе, давайте проясним, что мы подразумеваем под ЦП и ядром, а также разницу между физическими ядрами и логическими ядрами.

ЦП

против ядра

Центральный процессор или просто « процессор » или « ЦП » — это чип в компьютере, который выполняет инструкции.

Традиционно у нас в компьютере был один ЦП, возможно, с математическим сопроцессором.

  • ЦП : Центральный процессор, чип внутри компьютера для выполнения инструкций.

Ядро — это другое название физического процессора для выполнения инструкций.

Компьютер с несколькими процессорами называется многоядерным.

Точно так же компьютерный чип, содержащий несколько процессоров, называется многоядерным процессором.

  • Многоядерный процессор : Физический чип с несколькими процессорами или ядрами.

Таким образом, для разработчиков термины «ЦП» и «ядра» используются взаимозаменяемо. Мы могли бы даже назвать их «ядрами ЦП».

Почти все современные компьютеры имеют несколько ядер.

Физические и логические ЦП

Есть еще один нюанс.

Современные ЦП обычно используют технологию, называемую гиперпоточностью.

Hyperthreading не относится к программе, использующей потоки. Вместо этого он относится к технологии внутри самих ядер ЦП, которая позволяет каждому физическому ядру или ЦП действовать так, как если бы это были два логических ядра или два ЦП.

  • Физические ядра : Количество ядер ЦП, предусмотренных в оборудовании, например. чипсы.
  • Логические ядра : учитывается количество ядер ЦП после гиперпоточности.

Он обеспечивает автоматический параллелизм в ядре, который может обеспечить ускорение до 30% по сравнению с ядрами ЦП, которые не поддерживают эту технологию.

Таким образом, когда мы подсчитываем ядра ЦП в системе, мы обычно подсчитываем количество логических ядер ЦП, а не количество физических ядер ЦП.

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

  • Количество физических ядер = Количество логических ядер / 2

Далее давайте посмотрим, как мы можем получить количество процессоров в Python.

Запутался в многопроцессорном API модуля?
Загрузите мою БЕСПЛАТНУЮ шпаргалку в формате PDF

Как получить количество процессоров в Python

Есть несколько способов получить количество процессоров в Python.

Стандартная библиотека предоставляет два чистых подхода к Python:0004 функция.

Давайте рассмотрим каждый по очереди.

Как использовать multiprocessing.cpu_count

Мы можем получить количество логических ядер ЦП в текущей системе, используя функцию multiprocessing.cpu_count() .

Возвращает положительное целое число.

Например:

# получить количество логических ядер процессора

n_cores = multiprocessing.cpu_count()

Как использовать os.cpu_count

Мы также можем использовать функцию os.cpu_count() для возврата количества логических ядер ЦП в текущей системе.

Например:

# получить количество логических ядер процессора

n_cores = os.cpu_count()

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

Тем не менее, в этом руководстве мы сосредоточимся на чисто независимых от платформы Python методах, которые мы можем использовать для определения количества процессоров в системе.

Теперь, когда мы знаем, как получить количество процессоров в Python, давайте рассмотрим несколько рабочих примеров.


Бесплатный курс многопроцессорной обработки Python

Загрузите мою памятку по многопроцессорному API, и в качестве бонуса вы получите БЕСПЛАТНЫЙ доступ к моему 7-дневному электронному курсу.

Узнайте, как использовать модуль многопроцессорной обработки Python, в том числе как создавать и запускать дочерние процессы и как использовать мьютексы и семафоры.

Подробнее
 


Количество процессоров с помощью multiprocessing.cpu_count()

Мы можем получить количество процессоров в вашей системе, используя функцию multiprocessing.cpu_count() .

Эта функция вернет количество логических процессоров в вашей системе в виде целого числа. Если количество процессоров определить невозможно, то функция вернет значение None.

В приведенном ниже примере выполняется получение и отчет о количестве логических ЦП в системе.

1

2

3

4

5

6

7

# SuperFastPython.com

# пример получения количества ядер процессора

из multiprocessing import cpu_count

# получение количества логических ядер процессора

n_cores = cpu_count()

90 90 процессоров

print(f’Количество логических ядер ЦП: {n_cores}’)

При выполнении примера отображается общее количество логических ядер ЦП в системе.

В данном случае имеется 8 логических ядер ЦП. В моей системе есть гиперпоточность, что означает наличие 4 физических ядер ЦП.

Обратите внимание: конкретные результаты могут отличаться в зависимости от количества ядер ЦП в вашей системе.

Количество логических ядер ЦП: 8

Сколько у вас ядер процессора? Дайте мне знать в комментариях ниже.

Далее рассмотрим альтернативный способ получения количества ядер ЦП.

Перегружены API параллелизма Python?
Найдите облегчение, загрузите мои БЕСПЛАТНЫЕ интеллектуальные карты Python Concurrency Mind Maps

Количество процессоров с помощью os.cpu_count()

Мы можем получить количество процессоров в вашей системе, используя функцию os.cpu_count() .

Эта функция вернет количество логических процессоров в вашей системе в виде целого числа. Если количество процессоров определить невозможно, то функция вернет значение Нет .

Фактически, multiprocessing.cpu_count() просто вызывает функцию os.cpu_count() .

В приведенном ниже примере выполняется получение и отчет о количестве логических ЦП в системе.

1

2

3

4

5

6

7

# SuperFastPython. com

# пример получения количества ядер процессора

из os import cpu_count

# получить количество логических ядер ЦП

n_cores = cpu_count()

# сообщить количество логических ядер ЦП

print(f’Количество логических ядер ЦП: {n_cores}’)

При выполнении примера отображается общее количество логических ядер ЦП в системе.

В данном случае имеется 8 логических ядер ЦП. В моей системе есть гиперпоточность, что означает наличие 4 физических ядер ЦП.

Обратите внимание: конкретные результаты могут отличаться в зависимости от количества ядер ЦП в вашей системе.

Количество логических ядер ЦП: 8

Сколько у вас ядер процессора? Дайте мне знать в комментариях ниже.

Далее давайте рассмотрим количество ядер ЦП, доступных для вашего процесса.

Количество доступных ядер ЦП

Мы также можем получить общее количество ЦП, которое может использоваться текущим процессом Python.

Функция os.sched_getaffinity() возвращает сведения о количестве ядер ЦП, доступных для текущего процесса.

Обратите внимание, что эта функция доступна только на некоторых платформах Unix, например. не Windows или macOS.

Мы передаем нулевой PID, чтобы сообщить подробности обо всех доступных процессорах для текущего процесса. Результатом является список сведений о доступных ядрах ЦП, из которых мы можем затем сообщить длину, чтобы получить количество доступных ядер.

Обычно это все ядра ЦП системы, хотя они могут быть ограничены операционной системой, другим программным обеспечением или самой программой Python через библиотечный вызов.

Например:

# получить количество доступных ядер процессора

n_available_cores = len(os.sched_getaffinity(0))

В приведенном ниже примере показано количество доступных ядер ЦП.

1

2

3

4

5

6

7

# SuperFastPython. com

# пример получения количества доступных ядер процессора

из os import sched_getaffinity

# получение количества доступных логических ядер процессора

print(f’Количество доступных ядер ЦП: {n_available_cores}’)

Запуск примера может отображать количество ядер ЦП, доступных для вашего процесса.

Вероятно, это общее количество логических ядер ЦП в системе.

Функция os.sched_getaffinity() доступна не на всех платформах, т.е. не macOS и не Windows, и в этом случае запуск приведенного выше примера приведет к следующей ошибке:

ImportError: невозможно импортировать имя «sched_getaffinity» из «os»

Вы можете узнать больше о многопроцессорности в учебнике:

  • Многопроцессорность в Python: полное руководство

Дополнительная литература

В этом разделе представлены дополнительные ресурсы, которые могут оказаться полезными.

Книги

  • Python Multiprocessing Jump-Start, Джейсон Браунли, 2022 г. ( моя книга! ).
  • Многопроцессорный API Вопросы для собеседования
  • Памятка API многопроцессорного модуля

Я бы также рекомендовал отдельные главы в книгах:

  • Эффективный Python, Бретт Слаткин, 2019 г..
    • См.: Глава 7. Параллелизм и параллелизм
  • Высокопроизводительный Python, Ян Озсвальд и Миха Горелик, 2020 г.
    • См.: Глава 9: Многопроцессорный модуль
  • Python в двух словах, Алекс Мартелли и др., 2017 г.
    • См.: Глава: 14: Потоки и процессы

Направляющие

  • Многопроцессорность Python: полное руководство

API-интерфейсы

  • многопроцессорность — параллелизм на основе процессов
  • PEP 371 — Добавление многопроцессорного пакета

    Выводы

    Теперь вы знаете, как получить количество процессоров в Python.

    Есть вопросы?
    Задавайте свои вопросы в комментариях ниже, и я сделаю все возможное, чтобы ответить.

    Фото Ника Фьюингса на Unsplash

    Выяснение процессоров и сокетов — Обновлено!

    Итак, некоторое время назад я разместил эту статью в нашей старой групповой системе портала. Он был довольно популярен и вызвал немало хороших разговоров. Я делаю репост здесь и пытаюсь вплести некоторые из замечательных комментариев, которые мы получили от сообщества. Как и во всем в этом захватывающем мире открытого исходного кода, есть буквально десятки способов снять шкуру с этого кота. Поэтому, пожалуйста, читайте дальше и дайте нам знать, если у вас есть другие варианты, которыми мы можем поделиться.

    Недавно я получил электронное письмо от одного из моих клиентов. Его организация была готова пройти некоторые лицензионные сверки, и он был в затруднительном положении. У него было несколько сторонних продуктов, по которым им нужно было вести учет, и каждый продукт лицензировался с использованием другой модели. К сожалению, у них не было какой-либо CMDB, чтобы помочь (база данных управления конфигурацией — что-то очень удобное, когда дело доходит до просмотра инвентаризации вашего сервера). Я вспомнил годы, когда руководил большой командой Enterprise *NIX, и содрогнулся; легко раз в месяц или около того кто-то приходил, задавая мне точно такие же вопросы.

    Итак, мы работали над несколькими простыми командами, которые можно использовать для получения этих данных. Сначала мы попробовали это:

    $ lscpu | grep ‘socket’
    Ядер(а) на сокет: 2
    ЦП сокет(а): 1

    В этой команде «core» [ха-ха, каламбур] мы получили именно то, что хотел мой приятель Том, а затем и кое-что. Мы не только можем увидеть, сколько сокетов он использовал (о чем он и сообщал), но мы также узнали, сколько ядер было в каждом сокете.

    Затем мы попробовали кое-что, хотя и менее красивое, но заточенное на точное требование: 9физический /proc/cpuinfo|xargs -l2 echo|sort -u
    физический идентификатор : 0 идентификатор ядра : 0
    физический идентификатор : 0 идентификатор ядра : 1

    Итак, Том вернулся к работе, счастливый и готовый дать своим боссам ИМЕННО то, что они нуждались (он был так счастлив, что у него появился новый проект сценария, с которым можно было повозиться). Эти команды работали от RHEL6 до RHEL4, поэтому почти каждый должен иметь возможность их использовать. Поэтому, если вы заинтересованы в том, чтобы дать им вихрь, есть также несколько официальных решений для знаний, созданных нашим уважаемым Райаном Соухиллом, которые вы также можете просмотреть. :

    Проверить, является ли сервер виртуальной машиной?

    дмидекод | grep -i product

     Название продукта: Виртуальная платформа VMware
     

    Получить номер процессора

     grep -i "физический идентификатор" /proc/cpuinfo | сортировать -у | туалет -л
     

    dmidecode |grep -i cpu

    Обозначение сокета: CPU1

     Обозначение сокета: CPU2
        Обозначение сокета: CPU3
        Обозначение сокета: CPU4
                ЦП.Сокет.1
                ЦП.Сокет.2
                ЦП.Сокет.3
                ЦП.Сокет.4
     

    Проверить это можно несколькими способами:

    Проверить, включен ли HyperThreading

     Количество братьев и сестер = количество ядер
        cat /proc/cpuinfo |egrep 'sibling|cores'
        grep -i "процессор" /proc/cpuinfo | сортировать -у | туалет -л
     

    Hyperthreading также можно найти с помощью lscpu:

     # lscpu | grep -я поток
    Количество потоков на ядро: 2
     
     #cat /proc/cpuinfo | grep "физический идентификатор" | сортировать -у | туалет -л
    0
     

    Но dmidecode по-прежнему показывает сокеты:

     # dmidecode -t4 | egrep 'Обозначение|Статус'
            Обозначение сокета: ЦП 1
            Статус: Заполнено, Включено
            Обозначение сокета: ЦП 2
            Статус: Заполнено, Включено
     

    И, безусловно, лучшим скрытым самородком из старой статьи был инструмент, который я очень часто использую здесь в течение дня, помогая поддерживать клиентов: xsos

    Я использую xsos, чтобы просмотреть информацию, представленную в sosreports, но ее много. отличного использования (например, наш вопрос proc/socket здесь). Вы можете получить xsos здесь:

    https://github.com/ryran/xsos

    Репозиторий Yum доступен для xsos — инструмент для системных администраторов

    На машине здесь, в лаборатории, я запустил xsos, чтобы вы могли видеть типичный вывод :

     # кссос
    Операционные системы
      Имя хоста: LINUXizTHAawesome
      Дистрибутив: Red Hat Enterprise Linux Workstation версии 6.4 (Сантьяго)
      Ядро: 2.6.32-358.18.1.el6.x86_64
      Уровень выполнения: N 5 (по умолчанию: 5)
      SELinux: принудительно (по умолчанию: принудительно)
      Системное время: четверг, 12 сентября, 08:17:11 по восточному поясному времени 2013 г.
      Время загрузки: вторник, 10 сентября, 07:29:28 по восточному поясному времени 2013 г. (1378812568)
      Время работы: 2 дня, 47 минут, 2 пользователя
      Средняя нагрузка: 0,13 (3%), 0,14 (4%), 0,10 (2%)
      Время процессора с момента загрузки:
        us 7%, ni 0%, sys 1%, idle 91%, iowait 1%, irq 0%, sftirq 0%, Steal 0%
      procs_running (procs_blocked):
        2 (0)
      Проверка ядра на наличие повреждений: 0 (ядро не повреждено)
    <фрагмент>
    ЦПУ
      4 логических процессора (2 ядра ЦП)
      1 процессор Intel Core i7-2640M с тактовой частотой 2,80 ГГц (флаги: aes, ht, lm, pae, vmx)
      └─4 потока / 2 ядра каждый
    <фрагмент>
     

    БАМ! Именно то, что мы хотели, в красиво оформленном выводе.

    Читайте также: