Я пытаюсь отслеживать использование сети скриптом Python с помощью psutil, и для проверки этого я использую базовую программу сокетов. Когда я отправляю эти данные повторно в течение 60 секунд, я получаю меньшее число, чем когда я просто жду 60 секунд.
Я получаю примерно 100858 пакетов, когда просто жду, и примерно 120, когда отправляю udp-пакеты.
Я запускаю это на SBC Rock Pi под управлением Ubuntu, а сервером является мой ноутбук в той же локальной сети.
Мой вот эта функция для отправки данных через udp
def test_network_and_cpu(duration=60):
# Define the target host and port for sending and receiving packets
target_host = '192.168.0.168'
target_port = 12345
# Create a UDP socket for sending and receiving packets
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# Set a timeout for the socket operations
sock.settimeout(1)
# Get the start time
start_time = time.time()
# Initialize counters for sent and received packets
sent_packets = 0
received_packets = 0
# Loop until the specified duration is reached
while time.time() - start_time < duration:
# Send a packet
sock.sendto(b"TestPacket", (target_host, target_port))
sent_packets += 1
# Try to receive a packet
try:
data, addr = sock.recvfrom(1024)
if data:
received_packets += 1
except socket.timeout:
pass
# Print CPU load and packet statistics
print(f"Sent: {sent_packets} | Received: {received_packets}", end='\r')
# Close the socket
sock.close()
# Print a final message
print("\nTest completed.")
и с помощью этого я измеряю нагрузку на свою сеть
start_pkts_sent = psutil.net_io_counters().packets_sent
start_pkts_recv = psutil.net_io_counters().packets_recv
cpu_percents = monitor(target=test_network_and_cpu)
end_pkts_sent = psutil.net_io_counters().packets_sent
end_pkts_recv = psutil.net_io_counters().packets_recv
final_pkts_sent = end_pkts_sent - start_pkts_sent
final_pkts_recv = end_pkts_recv - start_pkts_recv
функция монитора используется для получения среднего значения использования процессора, я добавил ее сюда, но, вероятно, она не имеет значения
def monitor(target):
worker_process = mp.Process(target=target)
worker_process.start()
p = psutil.Process(worker_process.pid)
# log cpu usage of `worker_process` every 10 ms
cpu_percents = []
while worker_process.is_alive():
cpu_percents.append(p.cpu_percent())
time.sleep(0.1)
worker_process.join()
return cpu_percents
Подробнее здесь: https://stackoverflow.com/questions/781 ... ng-packets
Скрипт для отслеживания использования сети, показывающий увеличенные результаты, когда пакеты не отправляются ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Увеличенные изображения не имеют разных размеров в соответствии с JavaScript.
Anonymous » » в форуме CSS - 0 Ответы
- 8 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Как запустить скрипт отслеживания ISS круглосуточно и без выходных на PythonAnywhere?
Anonymous » » в форуме Python - 0 Ответы
- 12 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Как запустить скрипт отслеживания ISS круглосуточно и без выходных на PythonAnywhere?
Anonymous » » в форуме Python - 0 Ответы
- 18 Просмотры
-
Последнее сообщение Anonymous
-