예를 들어, bash를 사용하여 시스템 CPU 사용량을 가져와 백분율로 표시하는 방법을 알고 싶습니다.
예제 출력:
57%
코어가 여러 개인 경우 평균 백분율을 계산할 수 있으면 좋을 것입니다.
답변1
이는 다음을 위해 수행됩니다.전체 CPU 사용량 보기. 이것은 python3
크로스 플랫폼을 호출하고 사용합니다.psutil
기준 치수.
printf "%b" "import psutil\nprint('{}%'.format(psutil.cpu_percent(interval=2)))" | python3
이 interval=2
섹션에서는 2초의 차단 기간 동안 총 CPU 로드를 측정해야 함을 나타냅니다.
예제 출력:
9.4%
여기에 포함된 Python 프로그램은 다음과 같습니다.
import psutil
print('{}%'.format(psutil.cpu_percent(interval=2)))
time
호출 앞에 놓는 것은 이 경우 약 2초의 지정된 간격이 필요하다는 것을 증명합니다. 호출 및 출력은 다음과 같습니다.
$ time printf "%b" "import psutil\nprint('{}%'.format(psutil.cpu_percent(interval=2)))" | python3
9.5%
real 0m2.127s
user 0m0.119s
sys 0m0.008s
출력 보기그리고 별도의 코어, 이 Python 프로그램을 사용해 보겠습니다. 먼저 "CPU당" 정보의 Python 목록(배열)을 얻은 다음 해당 목록의 모든 항목을 평균하여 "총 CPU %" 유형 값을 얻습니다. 그런 다음 전체 및 개별 코어 비율을 인쇄합니다.
파이썬 프로그램:
import psutil
cpu_percent_cores = psutil.cpu_percent(interval=2, percpu=True)
avg = sum(cpu_percent_cores)/len(cpu_percent_cores)
cpu_percent_total_str = ('%.2f' % avg) + '%'
cpu_percent_cores_str = [('%.2f' % x) + '%' for x in cpu_percent_cores]
print('Total: {}'.format(cpu_percent_total_str))
print('Individual CPUs: {}'.format(' '.join(cpu_percent_cores_str)))
원한다면 아래와 같이 매우 보기 흉한 한 줄짜리 bash 스크립트로 래핑할 수 있습니다. bash 1-liner로 래핑하려면 Python 프로그램에서 큰따옴표( ''
)가 아닌 작은따옴표( )만 사용해야 했습니다.""
printf "%b" "import psutil\n\
cpu_percent_cores = psutil.cpu_percent(interval=2, percpu=True)\n\
avg = sum(cpu_percent_cores)/len(cpu_percent_cores)\n\
cpu_percent_total_str = ('%.2f' % avg) + '%'\n\
cpu_percent_cores_str = [('%.2f' % x) + '%' for x in cpu_percent_cores]\n\
print('Total: {}'.format(cpu_percent_total_str))\n\
print('Individual CPUs: {}'.format(' '.join(cpu_percent_cores_str)))\n\
" | python3
샘플 출력: 코어가 8개이므로 "개별 CPU:" 뒤에 8개의 숫자가 옵니다.
Total: 10.15%
Individual CPUs: 11.00% 8.50% 11.90% 8.50% 9.90% 7.60% 11.50% 12.30%
~을 위한psutil.cpu_percent(interval=2)
Python 호출 작동 방식 에 대한 추가 정보, 보다공식 psutil.cpu_percent(interval=None, percpu=False)
문서는 여기에 있습니다:
psutil.cpu_percent(interval=None, percpu=False)
현재 시스템 전체 CPU 사용률을 백분율로 나타내는 부동 소수점 숫자를 반환합니다. 시간 간격 >인 경우
0.0
시간 간격 전후에 경과된 시스템 CPU 시간(차단)을 비교합니다. 간격이 마지막 호출 또는 모듈 가져오기 이후 경과된 시스템 CPU 시간과 같0.0
거나 비교할 때 즉시 반환됩니다.None
이는 처음 호출될 때 의미 없는0.0
값을 반환하므로 무시해야 함을 의미합니다. 이 경우 정확성을 위해0.1
호출 사이에 최소 몇 초의 간격을 두고 이 함수를 호출하는 것이 좋습니다 . percpu가 True이면 각 CPU의 사용률을 나타내는 부동 소수점 숫자 목록을 반환합니다. 목록의 첫 번째 요소는 첫 번째 CPU를 참조하고, 두 번째 요소는 두 번째 CPU를 참조하는 방식입니다. 목록의 순서는 호출 간에 일관됩니다.경고하다:이 함수를 처음 호출할 때 간격 =을 사용하세요
0.0
. 그렇지 않으면 무시해야 하는 의미 없는 값이None
반환됩니다 .0.0