亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Python UDP套接字,未知延遲

Python UDP套接字,未知延遲

慕田峪4524236 2023-06-27 14:36:43
我每 1 毫秒使用 UDP 套接字將 32 字節數據從實時應用程序發送到 python 實例。發送方配置為發送 1ms 時間分辨率 UDP 數據包。在接收端,每隔幾次迭代后,就會出現 15 或 16 毫秒的延遲。誰能幫我理解為什么?使用 Windows 虛擬機。Intel Xeon Gold 5120 2 核 CPU,2.20 GHz,6 GB RAM,采用 Windows 10 Pro 操作系統。## Import necessary librariesimport socketimport time"""just get the raw values from UDP socket every 1msThe sender sends it with that temporal resolution"""UDP_IP = "10.10.114.22"UDP_PORT = 8208 #UDP phasor values 32 bytes (V,phi,P)sock_ph = socket.socket(socket.AF_INET,  # Internet                     socket.SOCK_DGRAM)  # UDPsock_ph.bind((UDP_IP, UDP_PORT))print("socket bound, waiting for data...")while True:    time_before_raw = time.monotonic_ns()    raw = sock_ph.recv(32) #I am receiving 32 bytes data    time_after_raw = time.monotonic_ns()    print((time_after_raw-time_before_raw),raw,len(raw))打印輸出如下:我嘗試使用wireshark,可以看到數據包以1ms 的間隔傳入。所以基本上 python 套接字可能存在一些緩沖問題。 經過進一步調查發現,14-16 個 UDP 數據包幾乎同時進入 python 環境(它們之間的延遲為 0 毫秒),然后在 14-16 毫秒后,下一批數據包到來。就好像有某種緩沖區一樣。
查看完整描述

1 回答

?
30秒到達戰場

TA貢獻1828條經驗 獲得超6個贊

延遲是由于 的時間分辨率造成的monotonic_ns(),time.perf_counter_ns()解決了這個問題。


查看完整回答
反對 回復 2023-06-27
  • 1 回答
  • 0 關注
  • 153 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號