首先,我将解释我的代码是如何工作的。我有 3 个相互交互的模块:2 个模块通过套接字连接到一个模块并发送 UDP 帧。单个模块接收 UDP 帧,将它们保存到队列中,然后另一个函数将队列作为输入并进行一些处理。
我正在运行在不同终端中发送 UDP 帧的模块。我想运行接收 UDP 帧的函数和在不同线程中对保存的帧进行处理的函数。为此,我使用了线程和队列包。但是我没能同时运行所有线程;它总是卡在第二个线程中,永远不会到达最后一个线程。
这是我的代码:
send_1.py:
import socket
import pickle
import time
def send_frame():
UDP_IP = "127.0.0.1"
UDP_PORT = 5005
MESSAGE = {'x': 0.20, 'y': 0.2, 'z': 0.2}
MESSAGE = pickle.dumps(MESSAGE)
print(type(MESSAGE))
print("UDP target IP:", UDP_IP)
print("UDP target port:", UDP_PORT)
print("message:", MESSAGE)
sock = socket.socket(socket.AF_INET, # Internet
socket.SOCK_DGRAM) # UDP
while True:
sock.sendto(MESSAGE, (UDP_IP, UDP_PORT))
time.sleep(5)
send_frame()
send_2.py:
import socket
import pickle
import time
def send_frame():
UDP_IP = "127.0.0.1"
UDP_PORT = 5006
# MESSAGE = b"Hello, World!"
MESSAGE = {'x': 2.20, 'y': 2.2, 'z': 2.2}
MESSAGE = pickle.dumps(MESSAGE)
print(type(MESSAGE))
print("UDP target IP:", UDP_IP)
print("UDP target port:", UDP_PORT)
print("message:", MESSAGE)
sock = socket.socket(socket.AF_INET, # Internet
socket.SOCK_DGRAM) # UDP
while True:
sock.sendto(MESSAGE, (UDP_IP, UDP_PORT))
time.sleep(5)
send_frame()
这是接收帧的代码,将它们保存到队列然后处理它们。
胡子哥哥
相关分类