Python 3.3+Linuxosфункция
os.sched_getaffinity
os — планировщик (sched)
Возвращает множество ядер CPU, на которых разрешено выполняться процессу.
Синтаксис
os.sched_getaffinity(...)
Возвращает множество номеров процессоров, на которых процессу разрешено работать, — с учётом ограничений контейнера и taskset. Поэтому len(os.sched_getaffinity(0)) точнее os.cpu_count для размера пула. Ноль вместо PID означает текущий процесс. С 3.13 переносимый ответ даёт os.process_cpu_count.
Примеры
import os
print(os.sched_getaffinity(0)) # → ? только Unix: множество разрешённых ядер текущего процесса, например {0, 1, 2, 3}
cores = len(os.sched_getaffinity(0)); print(cores) # → ? только Unix: сколько ядер реально доступно процессу, например 4
print(os.cpu_count()) # → ? всего ядер в системе, например 8 — маску процесса не учитывает, в контейнере число завышено
os.sched_setaffinity(0, {0}); print(os.sched_getaffinity(0)) # → ? только Unix: {0} — после сужения маски остаётся одно ядро
print(os.sched_getaffinity(10 ** 7)) # → ProcessLookupError: процесса с таким pid нет
См. также
Частые ошибки
Открыть в полном глоссарииdocs.python.orgСообщить о неточности