我正在设置一个非常简单的消息服务器,使用TCP和UDP在带有wifi的Raspberry PI 2上的不同端口上。我正在使用UDP进行多播。服务器工作正常。问题是,当我运行服务器(TCP和UDP侦听器)时,处理器的使用率会跳到30%左右。这不是在处理任何东西,只是在听。当我关闭UDP时,它会上升到大约3-5%。这是正常的(它是一个RPi),还是我做错了什么?以下是初始化UDP监听器的代码:
class UDPServer(asyncore.dispatcher):
def __init__(self):
asyncore.dispatcher.__init__(self)
multicast_group = '224.3.29.71'
server_address = ('', 8081)
# Create the socket
self.create_socket(socket.AF_INET, socket.SOCK_DGRAM)
# Bind to the server address
self.bind(server_address)
group = socket.inet_aton(multicast_group)
mreq = struct.pack('4sL', group, socket.INADDR_ANY)
self.setsockopt(socket.IPPROTO_IP, socket.IP_ADD_MEMBERSHIP, mreq)
print("UDP listening on {}:{}".format(multicast_group,8081))发布于 2016-07-31 00:43:21
我花了一段时间才回到这个问题上,但J.F. Sebastian有解决方案。我实现了asyncio,它的开销很小。我直接从Python documentation复制了演示。asyncio唯一的问题是,它似乎被列为临时的,所以从技术上讲,它可以在以后删除。如果你想要一个答案的积分,把你的评论移到一个答案上,我会给它打分。感谢J.F.Sebastion和dsgdfg。
https://stackoverflow.com/questions/38162706
复制相似问题