psutil은 주로 시스템 모니터링, 프로파일링, 프로세스 리소스 제한 및 실행중인 프로세스 관리에 유용합니다.
psutil은 기본적으로 제공되는 모듈이 아닙니다. pip를 이용해 설치하여야 합니다.
1. 시스템 관련기능(System related fuctions) - CPU
psutil.cpu_times(percpu=False)
cpu 시간을 튜플로 리턴합니다. percpu가 True로 되면 시스템의 각 cpu에 대해서 튜플로 리턴합니다.
psutil.cpu_percent(interval=None, percpu=False)
현재 시스템의 전체 cpu 사용률을 백분율로 리턴해줍니다. interval 옵션의 경우 최소 0.1에서 몇초간 호출하는 것을 추천합니다. 0이나 none의 경우 의미없는 값을 리턴합니다. percpu가 True로 되면 시스템의 각 cpu의 사용률을 백분율로 리턴해줍니다.
psutil.cpu_times_percent(interval=None , percpu=False)
cpu시간에 대한 사용율을 리턴합니다.
psutil.cpu_count(logical=True)
logical 플래그가 False라면 물리적 코어의 수를 리턴하고 True면 논리적 코어의 수를 리턴한다.
- Memory
psutil.virtual_memory()
시스템 메모리 사용량을 바이트 단위로 다음 항목을 포함하여 튜플로 리턴합니다.
total : 총 메모리
available : 시스템을 스왑하지 않고 프로세스에 즉시 제공할 수 있는 메모리. 실제 메모리 사용량을 모니터링 하는데 사용됩니다.
used : 사용되는 메모리, 플랫폼에 따라 다르게 계산됩니다. total - used 메모리가 반드시 free 메모리와 일치하지는 않습니다.
free : 실제 메모리 여유량.
active : 현재 사용중이거나 최근에 사용된 메모리
inactive : 사용중이 아닌 메모리
buffers : 파일 시스템, 메타 데이터와 같은 것들을 위한 캐시
shared : 여러 프로세스에서 동시에 액세스 가능한 메모리
slab : 커널 내부 데이터 구조 캐시
wired : 항상 ram에 남아있는 것으로 표시되는 메모리
psutil.swap_memory()
시스템 스왑 메모리 사용량을 다음 항목을 포함하여 튜플로 리턴합니다.
total : 총 스왑 메모리
used : 사용중인 스왑 메모리
free : 사용가능한 스왑 메모리
percent : 사용량
sin : 시스템이 디스크에서 스왑한 바이트 수 (누적)
sout : 시스템이 디스크에서 스왑한 바이트 수 (누적)
- Disks
psutil.disk_partitions(all=False)
마운트된 모든 디스크 파티션을 "df" 명령어와 유사하게 장치, 마운트지점 및 파일 시스템 유형을 포함한 튜플로 리턴합니다.
psutil.disk_usage(path)
total, used, free, percent 항목을 포함하여 튜플로 반환합니다.
사용 예
https://github.com/giampaolo/psutil/blob/master/scripts/disk_usage.py
- Network
psutil.net_connections(kind='inet')
시스템 전체 소켓 연결을 튜블로 리턴합니다.
fd : socket file descriptor, 윈도우와 sunOS에서는 항상 -1
family : address family
type : address type
laddr : local address
raddr : remote address
status : TCP 연결의 상태
pid : 소켓이 연결된 process id
psutil.net_if_addrs()
key가 NIC 이름이고 값이 NIC에 할당된 주소인 튜플 목록인 딕셔너리로 리턴합니다.
family : address family
address : 기본 NIC 주소
netmask : netmask 주소
broadcast : broadcast 주소
ptp : 포인트 투 포인트 주소(일반적으로 VPN)
psutil.net_if_stats()
key가 NIC 이름이고 값이 NIC에 할당된 주소인 튜플 목록인 딕셔너리로 리턴합니다.
isup : NIC가 작동중인지 여부를 나타냄
duplex : duplex 통신 유형
speed : MB로 표시되는 NIC 속도
mtu : 바이트 단위로 표시되는 NIC의 최대 전송 단위
2. Process
psutil.pids()
현재 실행중인 PID를 정렬해 리턴합니다.
psutil.process_iter(attrs=None, ad_value=None, new_only=False)
사용법 예:
>>> import psutil
>>> for proc in psutil.process_iter(attrs=['pid', 'name', 'username']):
... print(proc.info)
...
{'name': 'systemd', 'pid': 1, 'username': 'root'}
{'name': 'kthreadd', 'pid': 2, 'username': 'root'}
{'name': 'ksoftirqd/0', 'pid': 3, 'username': 'root'}
...
딕셔너리로 데이터 구조 생성 예:
>>> import psutil
>>> procs = {p.pid: p.info for p in psutil.process_iter(attrs=['name', 'username'])}
>>> procs
{1: {'name': 'systemd', 'username': 'root'},
2: {'name': 'kthreadd', 'username': 'root'},
3: {'name': 'ksoftirqd/0', 'username': 'root'},
...}
이름으로 필터링 :
>>> import psutil
>>> [p.info for p in psutil.process_iter(attrs=['pid', 'name']) if 'python' in p.info['name']]
[{'name': 'python3', 'pid': 21947},
{'name': 'python', 'pid': 23835}]
새로운 프로세스만 가져오기 :
>>> import psutil
>>> for proc in psutil.process_iter(attrs=['pid', 'name'], new_only=True):
... print(proc.info)
...
psutil.pid_exists(pid)
pid가 현재 프로세스 목록에 있는지 확인합니다.
psutil.wait_procs(procs, timeout=None, callback=None)
출처
'프로그래밍 언어 > [Python]스터디' 카테고리의 다른 글
[Coursera 2코스]Using Python to Interact with the Operating System qwiklabs answer (0) | 2020.02.13 |
---|---|
[module] shutil 모듈 사용하기 (High-level file operations) (0) | 2020.02.09 |
[읽을 거리]Classes and Methods Cheat Sheet (0) | 2020.01.31 |
[읽을 거리]Dictionary Methods Cheat Sheet (0) | 2020.01.30 |
[읽을 거리]Lists and Tuples Operations Cheat Sheet (0) | 2020.01.30 |