질문
파이썬에서 현재 시스템 상태(현재 CPU, RAM, 여유 디스크 공간 등)를 어떻게 얻을 수 있을까요? 이상적으로는 Unix와 Windows 플랫폼 모두에서 작동해야 합니다.
검색 결과, 몇 가지 가능한 추출 방법이 있는 것 같습니다:
PSI와 같은 라이브러리를 사용하는 방법(현재 개발이 활발하지 않고 여러 플랫폼을 지원하지 않는 것 같습니다)이나 pystatgrab과 같은 것을 사용하는 방법(2007년 이후로 활동이 없고 Windows를 지원하지 않는 것 같습니다).
플랫폼별 코드를 사용하는 방법으로, *nix 시스템에서는
os.popen("ps")
와 같은 방법을 사용하고 Windows 플랫폼에서는ctypes.windll.kernel32
의MEMORYSTATUS
를 사용하는 방법(ActiveState의 이 레시피 참조)입니다. 이러한 코드 스니펫을 모아 파이썬 클래스를 만들 수 있습니다.
이러한 방법들이 나쁘지는 않지만, 이미 잘 지원되며 여러 플랫폼에서 동일한 작업을 수행하는 방법이 이미 있는지 궁금합니다.
답변
The psutil library은 CPU, RAM 등에 대한 정보를 다양한 플랫폼에서 제공합니다:
psutil은 Python을 사용하여 이식성 있는 방식으로 실행 중인 프로세스 및 시스템 활용도 (CPU, 메모리)에 대한 정보를 검색하기 위한 인터페이스를 제공하는 모듈로, ps, top 및 Windows 작업 관리자와 같은 도구가 제공하는 많은 기능을 구현합니다.
현재 Linux, Windows, OSX, Sun Solaris, FreeBSD, OpenBSD 및 NetBSD를 지원하며, 32비트 및 64비트 아키텍처와 함께 Python 버전 2.6에서 3.5까지 지원합니다 (Python 2.4 및 2.5 사용자는 2.1.3 버전을 사용할 수 있습니다).
일부 예시:
#!/usr/bin/env python
import psutil
# 단일 부동 소수점 값을 제공합니다
psutil.cpu_percent()
# 많은 필드가 있는 객체를 제공합니다
psutil.virtual_memory()
# 해당 객체를 사전으로 변환할 수 있습니다
dict(psutil.virtual_memory()._asdict())
# 사용 중인 RAM의 백분율을 얻을 수 있습니다
psutil.virtual_memory().percent
79.2
# 사용 가능한 메모리의 백분율을 계산할 수 있습니다
psutil.virtual_memory().available * 100 / psutil.virtual_memory().total
20.8
더 많은 개념과 관심 개념을 제공하는 다른 문서는 다음을 참조하세요:
댓글