Скрипт для отслеживания использования сети, показывающий увеличенные результаты, когда пакеты не отправляютсяPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Скрипт для отслеживания использования сети, показывающий увеличенные результаты, когда пакеты не отправляются

Сообщение Anonymous »

Я пытаюсь отслеживать использование сети скриптом 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»