반응형
Python 대역폭 모니터 만들어보기 (Bandwidth Monitor Using Python)
Python으로 PC의 데이터 수송신 현황을 모니터할 수 있는 대역폭 모니터를 만들어보겠습니다.
로직은 간단합니다. 프로그램을 동작하기 시작했을 때의 수신 데이터, 송신 데이터를 저장합니다. 그 이후에 발생하는 수신 데이터와 송신 데이터에서 초기 수송신 데이터를 뺀 데이터 값을 매 초 마다 모니터 화면에 띄우는 것입니다.
어렵게 들릴 수 있지만 psutil이라는 라이브러리만 import한다면 아주 쉽게 작성할 수 있습니다.
그냥 util도 아니고 psutil은 process and system utilities의 줄임말입니다.
0. 필요 라이브러리
1
2
|
import time
import psutil
|
cs |
1. 초기 수송신 데이터 저장하기
1
2
3
|
last_received = psutil.net_io_counters().bytes_recv
last_sent = psutil.net_io_counters().bytes_sent
last_total = last_received + last_sent
|
cs |
2. 현재 - 과거 데이터 빼기
1
2
3
4
5
6
7
8
|
while True:
bytes_received = psutil.net_io_counters().bytes_recv
bytes_sent = psutil.net_io_counters().bytes_sent
bytes_total = bytes_received + bytes_sent
new_received = bytes_received - last_received
new_sent = bytes_sent - last_sent
new_total = bytes_total - last_total
|
cs |
3. Byte to Megabyte 변환하기
1
2
3
|
mb_ tal = new_total / 1024 / 1024
mb_new_sent = new_sent / 1024 / 1024
mb_new_total = new_total / 1024 / 1024
|
cs |
4. 출력
1
2
3
4
5
6
7
|
print(f"{mb_new_received:.2f} MB received, {mb_new_sent:.2f} MB sent, {mb_new_total:.2f} MB total")
last_received = bytes_received
last_sent = bytes_sent
last_total = bytes_total
time.sleep(1)
|
cs |
5. Full Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
import time
import psutil
last_received = psutil.net_io_counters().bytes_recv
last_sent = psutil.net_io_counters().bytes_sent
last_total = last_received + last_sent
while True:
bytes_received = psutil.net_io_counters().bytes_recv
bytes_sent = psutil.net_io_counters().bytes_sent
bytes_total = bytes_received + bytes_sent
new_received = bytes_received - last_received
new_sent = bytes_sent - last_sent
new_total = bytes_total - last_total
mb_new_received = new_received / 1024 / 1024
mb_new_sent = new_sent / 1024 / 1024
mb_new_total = new_total / 1024 / 1024
print(f"{mb_new_received:.2f} MB received, {mb_new_sent:.2f} MB sent, {mb_new_total:.2f} MB total")
last_received = bytes_received
last_sent = bytes_sent
last_total = bytes_total
time.sleep(1)
|
cs |
6. 결과
모니터 프로그램을 작동시키고 아무것도 실행하지 않았을 때의 모니터 현황입니다. 어떤 것도 다운로드 받고 있지 않고 업로드하고 있지 않으니 0mb received, 0mb sent라고 나옵니다.
구글을 실행했습니다. 구글이라는 홈페이지를 다운로드 받은 것이죠.
모니터에 변화가 조금씩 생겼습니다. 구글에서 무언가를 검색했더니 sent에도 변화가 생깁니다. 자유롭게 테스트해보세요.
반응형
'공부 > 파이썬 Python' 카테고리의 다른 글
비밀번호 관리 매니저 만들기 using Python (0) | 2022.03.18 |
---|---|
Pygorithm으로 알고리즘 공부하기 (0) | 2022.03.17 |
지문 (fingerprint) 일치 알고리즘 구현하기 (Python) (0) | 2022.02.27 |
GridSearchCV로 하이퍼파라미터 튜닝하기 (0) | 2022.02.22 |
Python Django 파이썬 장고 프로젝트 생성 방법 (0) | 2022.02.02 |
댓글