Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

คำนวณ Round Trip Time (RTT) ด้วย Python

Round Trip Time (RTT) คือเวลาที่สัญญาณใช้ไป-กลับ: จากส่ง Request จนได้รับ Response/Acknowledgment

ปัจจัยที่ส่งผลต่อ RTT

  • Data Transfer Rate ด้าน Sender
  • ชนิด Transmission Media (Fiber, Copper, Wireless)
  • ระยะทางจริงระหว่าง Sender-Receiver
  • จำนวน Node/Router ระหว่างทาง
  • Traffic บน LAN
  • จำนวน Request ที่ Intermediate Points จัดการ

โค้ดตัวอย่าง

import time
import requests
import sys

def find_roundtrip_time(url):
    initial_time = time.time()          # เวลาส่ง Request
    response = requests.get(url)
    ending_time = time.time()           # เวลาได้ Response
    elapsed_time = ending_time - initial_time
    print(f'The Round Trip Time for {url} is {elapsed_time:.4f} seconds')

if __name__ == "__main__":
    if len(sys.argv) > 1:
        find_roundtrip_time(sys.argv[1])
    else:
        print("Usage: python rtt.py ")

ผลลัพธ์ตัวอย่าง

$ python3 rtt.py https://www.tutorialspoint.com/
The Round Trip Time for https://www.tutorialspoint.com/ is 0.8301 seconds

$ python3 rtt.py https://www.google.com
The Round Trip Time for https://www.google.com is 0.5217 seconds

ขยายความสามารถ

import statistics

def measure_rtt_multiple(url, count=10):
    times = []
    for _ in range(count):
        start = time.time()
        requests.get(url, timeout=5)
        times.append(time.time() - start)
    print(f"Min: {min(times):.4f}s, Max: {max(times):.4f}s, Avg: {statistics.mean(times):.4f}s, Median: {statistics.median(times):.4f}s")

หมายเหตุ

  • ใช้ time.perf_counter() แทน time.time() เพื่อความแม่นยำสูงกว่า
  • ควรเพิ่ม Timeout และ Error Handling
  • RTT ไม่รวมเวลา DNS Lookup (ถ้าใช้ IP จะแม่นยำกว่า)