Python os.sched_setaffinity()
Python中的os.sched_setaffinity()方法用于设置指定进程id所指示的进程的CPU关联掩码。进程的CPU亲和性掩码决定了它可以在哪些CPU上运行。
注意:此方法仅在某些UNIX平台上可用。
语法:os.sched_setaffinity(pid, mask)
参数:
pid:需要设置CPU亲和性掩码的进程id。进程的CPU亲和性掩码决定它可以在哪些CPU上运行。
pid为0表示调用进程。
mask:一个由整数组成的可迭代对象,表示进程应该被限制到的cpu集合。
返回类型:此方法不返回任何值。
示例1
使用os.sched_setaffinity()方法
# Python program to explain os.sched_setaffinity() method
# importing os module
import os
# Get the number of CPUs
# in the system
# using os.cpu_count() method
print("Number of CPUs:", os.cpu_count())
# Get the set of CPUs
# on which the calling process
# is eligible to run. using
# os.sched_getaffinity() method
# 0 as PID represents the
# calling process
pid = 0
affinity = os.sched_getaffinity(pid)
# Print the result
print("Process is eligible to run on:", affinity)
# Change the CPU affinity mask
# of the calling process
# using os.sched_setaffinity() method
# Below CPU affinity mask will
# restrict a process to only
# these 2 CPUs (0, 1) i.e process can
# run on these CPUs only
affinity_mask = {0, 1}
pid = 0
os.sched_setaffinity(0, affinity_mask)
print("CPU affinity mask is modified for process id % s" % pid)
# Now again, Get the set of CPUs
# on which the calling process
# is eligible to run.
pid = 0
affinity = os.sched_getaffinity(pid)
# Print the result
print("Now, process is eligible to run on:", affinity)
输出:
Number of CPUs: 4
Process is eligible to run on: {0, 1, 2, 3}
CPU affinity mask is modified for process id 0
Now, process is eligible to run on: {0, 1}