[파이썬] os `os.sched_getaffinity()`를 사용한 CPU 어핀니티 조회

Python의 os 모듈은 운영체제와 상호 작용하기 위한 다양한 함수와 메소드를 제공합니다. 이 중에서 sched_getaffinity() 함수는 현재 프로세스가 실행 중인 CPU에 대한 어핀니티 정보를 가져올 수 있게 해줍니다. CPU 어핀니티는 특정 프로세스가 실행될 CPU 코어를 제한하는 기능을 의미하며, 이를 통해 프로세스의 성능을 최적화할 수 있습니다.

os.sched_getaffinity() 메소드의 사용법

os.sched_getaffinity() 메소드는 다음과 같이 사용할 수 있습니다.

import os

# 현재 프로세스의 CPU 어핀니티 정보를 가져옴
cpu_affinity = os.sched_getaffinity(0)
print(cpu_affinity)

위의 코드에서 sched_getaffinity() 메소드는 현재 프로세스의 CPU 어핀니티 정보를 가져옵니다. 인자로는 0을 전달하면 현재 프로세스의 ID를 의미합니다.

반환값

sched_getaffinity() 메소드의 반환값은 프로세스가 실행 중인 CPU 코어의 집합을 나타내는 set 객체입니다. 이 set 객체는 CPU 코어의 식별 번호로 구성되어 있으며, 해당 프로세스가 할당된 CPU 코어의 목록을 확인할 수 있습니다.

{0, 1, 2, 3}

위의 예제에서 반환된 set 객체는 0, 1, 2, 3번 CPU 코어에 해당하는 어핀니티를 나타냅니다.

예외 처리

sched_getaffinity() 메소드는 OS에 따라 지원되지 않을 수 있으므로, 예외 처리를 통해 이를 대비해야 합니다. NotImplementedError 예외가 발생할 경우, 해당 OS에서는 sched_getaffinity() 함수를 사용할 수 없다는 것을 의미합니다. 이러한 경우에는 다른 방법을 사용하여 CPU 어핀니티를 조회해야 합니다.

import os

try:
    cpu_affinity = os.sched_getaffinity(0)
    print(cpu_affinity)
except NotImplementedError:
    print("sched_getaffinity not supported on this OS")

위의 예제에서는 NotImplementedError 예외를 처리하여 해당 OS에서 sched_getaffinity() 함수를 지원하지 않을 때 메시지를 출력합니다.

결론

Python의 os 모듈의 sched_getaffinity() 메소드를 사용하면 현재 프로세스가 어떤 CPU 코어에 할당되어 있는지 확인할 수 있습니다. CPU 어핀니티를 조정함으로써 프로세스의 성능을 최적화할 수 있으므로, CPU 활용도를 높이기 위해 해당 메소드를 활용해 보는 것을 권장합니다.